android cursor.getBlob不工作
嗨,我尝试在sqlite数据库中存储和检索图像。我的以下代码不起作用。我不确定我做错了什么。请帮忙。 我创建了数据库表,如下所示:android cursor.getBlob不工作,android,sqlite,blob,Android,Sqlite,Blob,嗨,我尝试在sqlite数据库中存储和检索图像。我的以下代码不起作用。我不确定我做错了什么。请帮忙。 我创建了数据库表,如下所示: db = openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS student(rollno VARCHAR, name VARCHAR,photo BLOB,marks VARCHAR);"); ByteArra
db = openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS student(rollno VARCHAR,
name VARCHAR,photo BLOB,marks VARCHAR);");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
imageInByte = stream.toByteArray();
然后我插入字段
db.execSQL(“插入学生值(”
+editRollno.getText()+“,”
+editName.getText()+“,”
+imageInByte+“,”
+editMarks.getText()
+ "');");代码>
其中imageInByte是一个byte[]变量,该变量以前从gallery分配,如下所示:
db = openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS student(rollno VARCHAR,
name VARCHAR,photo BLOB,marks VARCHAR);");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
imageInByte = stream.toByteArray();
当我尝试从db检索图像时,它失败了:
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);
}
不能简单地将字节数组视为文本。
(要将blob与execSQL一起使用,必须使用blob文本。)
要插入行,请使用,它具有。尝试编写editRollno.getText().toString()
而不是editRollno.getText()
,并对所有其他行执行此操作。