2017-09-08 26 views
1

私はSQLiteデータベースに画像とクラスのテーブルを作成しました。 私はこのテーブルのためにCRUDをやっています。私はImageを取得することに固執しています。誰が次に何をすべきか知っていますか?画像はカメラで撮影されます。データベースのSQLiteでカメラから写真を保存

public class Image 
{ 
private int pid; 
private byte[] photoByte; 

public Image() 
{ 

} 
public Image(byte[] aPhoto) 
{ 
    this.photoByte = aPhoto; 
} 

public void set_id(int pid) 
{ 
    this.pid = pid; 
} 
public int getId() 
{ 
    return pid; 
} 

public void setPhoto(byte[] aPhoto) 
{ 
    this.photoByte = aPhoto; 
} 
public byte[] getPhoto() 
{ 
    return photoByte; 
} 

} 

パート:

 String CREATE_PHOTO_TABLE = "CREATE TABLE IF NOT EXISTS " + PRODUCT_PHOTO + " (" + KEY_PID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
      + KEY_PHOTO + " BLOB" + ")"; 
    db.execSQL(CREATE_PHOTO_TABLE); 

public void savePhoto(byte[] image) 
{ 

    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(KEY_PHOTO, image); 
    long newId = db.insert(PRODUCT_PHOTO, null, values); 
} 
public byte[] getPhoto() 
{ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.query(PRODUCT_PHOTO, new String[]{KEY_PID}) 
??????? 
} 
+2

'+ KEY_PHOTO +" BLOB "+") ";'ああ、私は!! **別のデータベースのSBLOBBINGアプリ!**このひどい*反パターン*を何回見なければなりませんか?データベースをBLOBで膨らませないでください。 **画像パス**を代わりに保存してください! –

+0

私はそれを行うための他の方法を知らない。 – Joanna

+1

上記の私のコメント「画像パスを保存する」をもう一度読んでください。 –

答えて

0

は、私は強くあなたの代わりに画像のパスを保存することをお勧めします。あなたはBLOBを保存しなければならない場合でも、その後、次のものが必要です。

  1. はバイト[]カーソルから、あなたの必要性にこのdocs

    byte[] value = cursor.getBlob(cursor.getColumnIndex(name));

  2. 使用バイト[]で述べたように(書き込み取得しますみんなに来て、ファイル、ビットマップなど)

0

に、ジョアンナは、彼女は何の助けを求めています彼女のソリューションに叱らし、Dbの上で写真を保存したいと考えていません。

ソリューションは簡単です、あなたはちょうど私がデータベースに画像を保存行う[]

ブロブのバイトを返す必要があり、私は(私はバイトを送る私のアンドロイドアプリで、私のMySQLデータベースに保存します[webservice経由でMySQLデータベースに接続] 私のアンドロイドアプリケーションの画像dbは毎日消去されるので、一時ストレージと同じですが、MySQL Dbでは画像が30KB以上のレコードがあります。それらを保存するか、Webソリューションから取得する際に問題があります。

+0

ありがとうsoqui! – Joanna

関連する問題