2012-04-15 7 views
0

Ich versuche, ein Bild in einer Datenbank zusammen mit einigen Strings eingeben, aber ich bekomme die folgende Fehlermeldung auf meinem Put-Methode:Android versuchen Bild als ByteArray in SQLite-Datenbank zu setzen, auf Put-Methode immer Fehler

The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Byte[]) 

Aber wenn ich es in Tutorials sehe, scheint es genau so gemacht zu sein, wie ich es mache.

Hier ist der entsprechende Code:

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); 
} 

Ich denke, es könnte etwas mit Putting Saiten sowie die bytearray zu tun hat, aber ich würde nicht wissen, wie es zu lösen, und kann es nicht finden durch Googeln

Antwort

2

Es scheint mir komisch, dass Sie versuchen, ein B yte Array einzufügen. Ihre Bilddaten sind höchstwahrscheinlich ein b yte Array. Da es keine put-Methode für Arrays von Byte-Objekten gibt, sondern nur für Arrays des primitiven Datentyps byte, hat der Compiler keine Ahnung, was zu tun ist.

1

Schauen Sie hier:

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); 
    } 
} 
+0

ja, das ist eine der Tutorials, die ich als Basis verwendet habe. aber ich habe meine Abfragen und Methoden, die mit der Datenbank in einer separaten DatabaseAdapter-Klasse interagieren. Ich rufe die createItem-Methode in meiner Aktivitätsklasse auf, sodass ich diese Datenbankinteraktionsblöcke in den verschiedenen Aktivitätsklassen, in denen ich sie verwenden möchte, nicht neu schreiben muss. In meiner Aktivitätsklasse würde ich etwas wie DatabaseAdapter.createItem (String Name, Stringadresse, Byte [] Bild); –

Verwandte Themen