我正在尝试将图像与一些字符串一起输入数据库,但是我的put方法出现以下错误:
The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Byte[])
但是当我在教程中看到它时,它似乎完全像我一样。
以下是相关代码:
private static final String DATABASE_CREATE =
"CREATE Table " + DATABASE_TABLE_LIST + " ( "
+ LIST_ID + " integer PRIMARY KEY Autoincrement, "
+ LIST_NAME + " text NOT NULL, "
+ LIST_ADDRESS + " text NOT NULL, "
+ LIST_IMAGE + " BLOB );";
...
public long createItem(String name, String address, Byte[] image) {
ContentValues initialValues = new ContentValues();
initialValues.put(LIST_NAME, name);
initialValues.put(LIST_ADDRESS, address);
initialValues.put(LIST_IMAGE, image);
return mDb.insert(DATABASE_TABLE_LIST, null, initialValues);
}
我想它可能与放置字符串以及bytearray有关,但我不知道如何解决它并且无法通过Googling找到它
答案 0 :(得分:2)
我尝试插入 B yte数组似乎很奇怪。您的图像数据很可能是 b yte数组。由于Byte对象的数组没有put方法,但只有原始数据类型 byte 的数组,编译器不知道该怎么做。
答案 1 :(得分:1)
看这里:
http://www.tutorialforandroid.com/2009/10/how-to-insert-image-data-to-sqlite.html
DefaultHttpClient mHttpClient = new DefaultHttpClient();
HttpGet mHttpGet = new HttpGet("your image url");
HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet);
if (mHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = mHttpResponse.getEntity();
if ( entity != null) {
// insert to database
ContentValues values = new ContentValues();
values.put(MyBaseColumn.MyTable.ImageField, EntityUtils.toByteArray(entity));
getContentResolver().insert(MyBaseColumn.MyTable.CONTENT_URI, values);
}
}