2011-03-24 65 views
1

我在我的代码中存在一个问题,我正在存储从学生名称,年龄和图片访问学生数据从sqlite数据库。我将所有这些数据完美存储,但不能只访问图像字段。从Sqlite数据库Aceessing图像

图片在屏幕上显示空白,

我不知道为什么。请检查我的代码,并给我有用的建议。

谢谢。

这里是代码:

package com.ex.imageStore; 

import java.util.Locale; 

import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class NewScreen extends Activity{ 
     SQLiteDatabase db; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.newscreen); 
     TextView name = (TextView)findViewById(R.id.textView1); 
     TextView age = (TextView)findViewById(R.id.textView2); 
     ImageView img = (ImageView)findViewById(R.id.imageView1); 

     db = openOrCreateDatabase(
       "StudentData.db" 
       , SQLiteDatabase.CREATE_IF_NECESSARY 
       , null 
       ); 

     db.setVersion(1); 
      db.setLocale(Locale.getDefault()); 
      db.setLockingEnabled(true); 

      Cursor cur = db.query("stuData", 
        null, null, null, null, null, null); 
       //cur.moveToFirst(); 
      cur.moveToPosition(0); 
      name.setText(cur.getString(1)); 
      age.setText(cur.getString(2)); 
      byte[] bb = cur.getBlob(3); 
Bitmap theImage = BitmapFactory.decodeByteArray(bb,0,bb.length); 
      img.setImageBitmap(theImage);//-->It //cannot convert bytearray to bitmap 
       /* while (cur.isAfterLast() == false) { 
        tv.append("n" + cur.getString(1)); 
        cur.moveToNext(); 
       }*/ 
       cur.close(); 


    } 

}

theImage变量总是指派为空.........

+0

你如何确保图像被保存在数据库中? – 2011-03-24 06:52:10

回答

1

转换的byte[] bbByteArrayInputStream。对于你的程序,这将是

ByteArrayInputStream is = new ByteArrayInputStream(bb); 
Bitmap theImage = BitmapFactory.decodeStream(is); 
ImageView img = (ImageView)findViewById(R.id.imageView1); 
img.setImageBitmap(theImage); 

我认为这将帮助你。