我尝试使用此代码从数据库中检索以blob
格式存储的图像
但是这个方法不起作用,每当调用此方法时我的应用程序都会崩溃
那么如何从数据库中以字节或位图格式检索我的图像。
因为我想使用imageswitcher
我的logcat显示
07-26 18:12:51.253: E/string1(15682): --Hatheesingh jain temple
07-26 18:12:51.844: E/SQLiteLog(15682): (1) near "jain": syntax error
07-26 18:12:51.884: E/AndroidRuntime(15682): FATAL EXCEPTION: main
07-26 18:12:51.884: E/AndroidRuntime(15682): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.starting.starting/com.starting.starting.detailpage}: android.database.sqlite.SQLiteException: near "jain": syntax error (code 1): , while compiling: SELECT * FROM database WHERE place_name =Hatheesingh jain temple
07-26 18:12:51.884: E/AndroidRuntime(15682): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)
07-26 18:12:51.884: E/AndroidRuntime(15682): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
public byte[] get_image(String str){
//openDataBase();
Cursor c1 = checkDB.rawQuery("SELECT * FROM database WHERE place_name =" +str, null);
byte[] img = c1.getBlob(10);
return img;
//CloseDataBase();
}
答案 0 :(得分:2)
查看LogCat后,查询中出现SQL语法错误。您没有将该字符串包装在单引号中,因此它是SQL Compile错误,如LogCat中明确提到的那样
更改
Cursor c1 = checkDB.rawQuery("SELECT * FROM database WHERE place_name =" +str, null);
要强>
Cursor c1 = checkDB.rawQuery("SELECT * FROM database WHERE place_name ='" + str + "'", null);
除此之外,还请致电c1.moveToFirst()
以避免CursorIndexOutOfBoundsException
答案 1 :(得分:0)
database
是SQLite中的保留关键字。 您不能将其用作表格名称
您还需要致电
c1.moveToFirst();
前
byte[] img = c1.getBlob(10);
否则您将获得CursorIndexOutOfBoundsException
。