【问题标题】:how to retrive image from database in android如何从android中的数据库中检索图像
【发布时间】:2014-09-18 05:03:20
【问题描述】:

我尝试使用此代码从以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();

   }

【问题讨论】:

  • DATABASE 是保留字,也会发布 logcat 异常。
  • LogCat 说什么?
  • 你的database 有 11 列吗?发布CREATE 声明
  • 图片存储在11列,数据库是我的表名
  • (我最初的猜测是你需要在字符串周围加上引号,例如Cursor c1 = checkDB.rawQuery("SELECT * FROM database WHERE place_name = '" + str + "'", null);),但这取决于str 是什么。另外,正如其他人所说,出现 logcat 输出是有原因的:如果您的应用程序崩溃,请发布异常详细信息,事情会变得更加清晰。

标签: android database sqlite blob


【解决方案1】:

查看您的 LogCat 后,您的 Query 中有 SQL 语法错误。您没有将字符串用单引号括起来,所以它是 SQL 编译错误,正如 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

【讨论】:

    【解决方案2】:

    database 是 SQLite 中的保留关键字。 不能作为表名使用

    看看这个SQLite reserved keywords

    你也需要打电话

    c1.moveToFirst();
    

    之前

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

    否则你会得到一个CursorIndexOutOfBoundsException

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 2015-07-06
      • 2016-07-16
      • 2013-01-08
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多