2015-03-02 103 views
1

嗨我試圖存儲和檢索圖像和sqlite數據庫。我的下面的代碼不起作用。我不確定我做了什麼錯誤。請幫忙。 我創建的數據庫表如下:android cursor.getBlob不工作

db = openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null); 
db.execSQL("CREATE TABLE IF NOT EXISTS student(rollno VARCHAR, 
name VARCHAR,photo BLOB,marks VARCHAR);"); 

然後我插入字段

db.execSQL("INSERT INTO student VALUES('" + editRollno.getText() + "','" + editName.getText() + "','" + imageInByte + "','" + editMarks.getText() + "');");

其中imageInByte是其如下從庫之前分配一個字節[]變量:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      yourImage.compress(Bitmap.CompressFormat.PNG, 100, stream); 
      imageInByte = stream.toByteArray(); 

當我試圖從數據庫檢索圖像它失敗:

Cursor c = db.rawQuery("SELECT * FROM student WHERE rollno='" 
       + editRollno.getText() + "'", null); 
     if (c.moveToFirst()) { 
      editName.setText(c.getString(1)); 
      editMarks.setText(c.getString(2)); 

      byte[] image = c.getBlob(3); 
      ByteArrayInputStream imageStream = new ByteArrayInputStream(image); 
      theImage = BitmapFactory.decodeStream(imageStream);  
      imageView2.setImageBitmap(theImage); 

     } 
+0

嘗試編寫'editRollno.getText()。toString()'而不是'editRollno.getText()',併爲所有其他人做。 – Apurva 2015-03-02 14:07:37

回答

1

不能簡單地將字節數組視爲文本。 (使用具有execSQL斑點,你將不得不使用BLOB文字。)

插入一行,使用insert method,其中有support for byte arrays