从数据库sqlite显示图像

时间:2012-02-14 07:15:00

标签: android database image sqlite

我的应用程序存在问题 我有这样的代码

Cursor cur=helper.getGamb(almagId);
cur.moveToFirst();
if(cur.getString(1).equals("")){
detGam.setImageResource(R.drawable.gambarnf);
}else detGam.setImageDrawable(Drawable.createFromPath(cur.getString(1)));
return Drawable.createFromPath(cur.getString(1));

但我有这样的错误

02-14 14:02:16.623: ERROR/AndroidRuntime(16468): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):     at com.sat.alfaloc.Detail.load(Detail.java:186)
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):     at com.sat.alfaloc.Detail.onCreate(Detail.java:100)
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):     ... 11 more

我该怎么做才能修复这个?谢谢:)

2 个答案:

答案 0 :(得分:0)

试试这个:

//assuming that you have fetched the data using cursor:
byte[] image1 = cursor.getBlob(cursor.getColumnIndexOrThrow("image_data"));
imageView1.setImageBitmap(BitmapFactory.decodeByteArray(image1, 0, image1.length));

答案 1 :(得分:0)

最好在数据库中存储图像路径而不是图像。使用存储在数据库中的图像路径访问这些图像。