如何从android中的数据库中检索图像

时间:2014-07-26 12:27:05

标签: android database sqlite blob

我尝试使用此代码从数据库中检索以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();

   }

2 个答案:

答案 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中的保留关键字。 您不能将其用作表格名称

看看这个SQLite reserved keywords

您还需要致电

c1.moveToFirst();

byte[] img = c1.getBlob(10);

否则您将获得CursorIndexOutOfBoundsException