Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android cursor.getBlob不工作_Android_Sqlite_Blob - Fatal编程技术网

android cursor.getBlob不工作

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

嗨,我尝试在sqlite数据库中存储和检索图像。我的以下代码不起作用。我不确定我做错了什么。请帮忙。 我创建了数据库表,如下所示:

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()
,并对所有其他行执行此操作。