2014-06-18 38 views
1

我只是想知道,我該如何將字節數組轉換爲blob?如何將字節數組轉換爲Android中的Blob數據類型

我的數據庫看起來是這樣的:

Photo 
id (int) | image_key (blob) 

這是我的代碼:

//this for getting data from picture 
Bitmap yourImage = extras.getParcelable("data"); 
// convert bitmap to byte 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
yourImage.compress(Bitmap.CompressFormat.PNG, 100, stream); 
//the problem is right here, i want to convert this byte array, to a blob data type 
byte imageInByte[] = stream.toByteArray(); 

我如何轉換這個字節數組到我的數據庫的照片,並把它放在現場image_key(BLOB) ?因爲我嘗試過但有錯誤。有人能幫我解決這個錯誤嗎?請我需要幫助..

+0

我錯誤?看起來像這可能是重複的副本:http://stackoverflow.com/questions/4191136/how-to-store-and-retrieve-a-byte-array-image-data-to-and-from-a -sqlite-databas – IrishGeek82

+0

@ IrishGeek82好吧,錯誤看起來像我不能把imageInByte [B @ 421a0a0的值放到blob數據類型中,所以查詢是INSERT INTO Photo(image_key)VALUES('[B @ 421a0a0' ),請糾正我,如果我錯了。 – user3747208

+0

您是否在使用類似的東西? cv.put(CHUNK,buffer); // table CHUNK blob type字段 long rawId = database.insert(TABLE,null,cv); // TABLE table name – IrishGeek82

回答

0

我猜你的代碼是

SQLiteDatabase.execSQL("INSERT INTO Photo (image_key) VALUES ('" + byteArray + "')"); 

這是行不通的,因爲使用的ByteArray將被轉換爲字符串「B @ 421a0a0」

使用SQLiteDatabase.execSQL( SQL字符串,對象[] bindArgs),而不是

SQLiteDatabase.execSQL("INSERT INTO Photo (image_key) VALUES (?)", byteArray); 

這就是所謂的Prepared statement

+0

謝謝你的回覆,但是還是錯誤的,execSQL只是拿String而已? – user3747208

+0

請添加您的logcat錯誤和execSQL代碼 – Charlie

+0

06-19 14:57:36.695:E/AndroidRuntime(29152):致命例外:主 06-19 14:57:36.695:E/AndroidRuntime(29152):java.lang .RuntimeException:無法啓動活動ComponentInfo {com.example.search/com.example.frontend.search.Main}:java.lang.IllegalArgumentException:索引1處的綁定值爲空 – user3747208

相關問題