Android Can';t将图像从SQLite存储到ImageView

Android Can';t将图像从SQLite存储到ImageView,android,image,sqlite,Android,Image,Sqlite,我有一个恼人的问题。我试图将图像从drawable文件夹存储到数据库,然后检索它并将其设置在ImageView中,但当我尝试将其存储在ImageView中并运行它时,它不会改变我首先放置的默认图像,ImageView。 下面是ImageView所在活动的代码和DB处理程序的代码。主要活动 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s

我有一个恼人的问题。我试图将图像从drawable文件夹存储到数据库,然后检索它并将其设置在
ImageView
中,但当我尝试将其存储在
ImageView
中并运行它时,它不会改变我首先放置的默认图像,
ImageView
。 下面是ImageView所在活动的代码和DB处理程序的代码。主要活动

    protected void onCreate(Bundle savedInstanceState)  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    ImageView img = (ImageView) findViewById(R.id.maintestImage);
    images();
    img.setImageBitmap(dbHandler.getImageDiet());



    initNewProf();
    initExercises();
}
public void images(){ //get the image from the drawable and store it in the base
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.abs)).getBitmap();

    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
    byte[] photo = baos.toByteArray();
        dbHandler.saveDiet(photo);
}` DB handler
 public Bitmap getImageDiet(){ //retrive the image from the base
    SQLiteDatabase db = getReadableDatabase();
    Cursor c =  db.rawQuery("SELECT imagedata FROM "+ TABLE_DIET, null);
    byte[] photo = hexStringToByteArray("e04fd020ea3a6910a2d808002b30309d");
    while(c.moveToNext())
    {
          photo=c.getBlob(3);
    }
    ByteArrayInputStream imageStream = new ByteArrayInputStream(photo);
    Bitmap theImage = BitmapFactory.decodeStream(imageStream);
    imgView.setImageBitmap(theImage);

}

你这样做是为了测试,还是为了学习?也就是说,为什么不直接在
ImageView
-
imgView.setImageResource(R.drawable.abs)
上设置资源drawable?因为我想从数据库中动态获取图像。我希望每个对象都有图像。实际上不建议将图像存储在数据库中。如果这些图像已经打包在你的应用程序中,那么只需将它们作为资源使用,如上所述。如果您想在安装后以某种方式检索图像,那么最好将它们存储为文件,并只保存数据库中的路径。如果你一心想做你正在做的事情,那么你需要做一些我们不能真正帮助你的调试,因为
c.getBlob(3)
,至少应该抛出一个异常,因为你的查询中只有一列。我还应该提一下,你发布的
getImageDiet()
方法没有返回任何东西,这样就不会编译了。在询问调试问题时,请始终提供答案。