Java 更新SQlite数据库中的图像

Java 更新SQlite数据库中的图像,java,android,sqlite,android-sqlite,blob,Java,Android,Sqlite,Android Sqlite,Blob,我正在尝试更新SQlite数据库中的图像,但它给了我一个错误: Caused by: android.database.sqlite.SQLiteException: unrecognized token: "[B@d3d70b2" (code 1): , while compiling: UPDATE img set image=[B@d3d70b2 在这一行: sdb.execSQL("UPDATE img set image=" + bytes + " WHERE id='"

我正在尝试更新SQlite数据库中的图像,但它给了我一个错误:

 Caused by: android.database.sqlite.SQLiteException: unrecognized token: "[B@d3d70b2" (code 1): , while compiling: UPDATE img set image=[B@d3d70b2
在这一行:

    sdb.execSQL("UPDATE img set image=" + bytes + " WHERE id='" + i + "'");
我在很多网站上搜索过,但我得到的只是如何插入图像

这是我用来插入、获取和更新图像的3个查询

public void insertImage(byte[] bytes, int user){

    ContentValues cv = new ContentValues();
    cv.put("image", bytes);
    cv.put("id", user);
    int a= (int)sdb.insert("img", null, cv);
    Toast.makeText(context,"inserted at "+a,Toast.LENGTH_SHORT).show();
}

public byte[] getimage(int i){
    Cursor c1 = sdb.rawQuery("select image from img where id='" + i + "'", null);
    c1.moveToNext();
    byte[] b= c1.getBlob(0);
    return b;
}

public void update(byte[] bytes, int i) {
    sdb.execSQL("UPDATE img set image=" + bytes + " WHERE id='" + i + "'");
}

注意:
insertImage和getImage工作正常。

由于您试图将
字节[]
串联在一个字符串中,该代码基本上会尝试插入
字节。toString()
而不是
字节

请尝试以下方法:

public void update(byte[] bytes, int i) {
    ContentValues cv = new ContentValues();
    cv.put("image", bytes);
    sdb.update("img", cv, "id=" + i, null);
}

由于您试图将
byte[]
连接到字符串中,因此该代码基本上会尝试插入
bytes.toString()
而不是
bytes

请尝试以下方法:

public void update(byte[] bytes, int i) {
    ContentValues cv = new ContentValues();
    cv.put("image", bytes);
    sdb.update("img", cv, "id=" + i, null);
}

最坏的做法。不要用二进制数据填充数据库。而是存储路径。可以,但在服务器数据库上保存数据时需要二进制数据。不一定。只需返回URL(相当于路径)。最糟糕的做法。不要用二进制数据填充数据库。而是存储路径。可以,但在服务器数据库上保存数据时需要二进制数据。不一定。只需返回URL(相当于路径)。