0

いくつかの文字列と一緒に画像をデータベースに入力しようとしていますが、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);
}

文字列とバイト配列の配置に関係があるのではないかと思いますが、解決方法がわからず、グーグルで見つけることができません

4

2 に答える 2

2

バイト配列を挿入しようとするのは奇妙に思えます。画像データはおそらくバイト配列です。Byte オブジェクトの配列に対する put メソッドはなく、プリミティブ データ型byteの配列に対してのみ put メソッドがあるため、コンパイラは何をすべきかわかりません。

于 2012-04-15T21:13:12.930 に答える
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);  
    }  
}  
于 2012-04-15T20:50:39.023 に答える