Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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:数据库中存储的缩略图返回空值_Android_Sqlite_Null - Fatal编程技术网

Android:数据库中存储的缩略图返回空值

Android:数据库中存储的缩略图返回空值,android,sqlite,null,Android,Sqlite,Null,我有一个Db,在那里我以ByteArray的形式存储了视频的路径及其缩略图。但是当我试图从数据库中检索缩略图时,我总是得到空值。下面是我用来检索拇指和路径的代码: db=openOrCreateDatabase("VideoPaths", Context.MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS paths(path VARCHAR,thumbnail BLOB);");

我有一个Db,在那里我以ByteArray的形式存储了视频的路径及其缩略图。但是当我试图从数据库中检索缩略图时,我总是得到空值。下面是我用来检索拇指和路径的代码:

        db=openOrCreateDatabase("VideoPaths", Context.MODE_PRIVATE, null);
        db.execSQL("CREATE TABLE IF NOT EXISTS paths(path VARCHAR,thumbnail BLOB);");
        Cursor c = db.rawQuery("SELECT path,thumbnail FROM paths",null);
        int index = c.getColumnIndex("path");
        int index2 = c.getColumnIndex("thumbnail");

        c.moveToFirst();

            if (c != null) {
                // Loop through all Results
                do {

                    String VideoPath = c.getString(index);
                    byte[] bytes = c.getBlob(index2);
                    Bitmap thumb = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);


                    pathList.add(VideoPath);
                    listRow.add(new VideoRow(VideoPath,thumb, "User", "Testing"));

                } while (c.moveToNext());
            }
你对如何解决这个问题有什么想法吗

另外,视频路径检索工作正常

编辑:下面是填充表的代码

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath,
                            MediaStore.Images.Thumbnails.MINI_KIND);
                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    thumb.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                    byte[] thumbnailBitmapBytes = stream.toByteArray();

                    db=openOrCreateDatabase("VideoPaths", Context.MODE_PRIVATE, null);
                    db.execSQL("INSERT INTO paths (path,thumbnail) values('" + serverPath + "','"+thumbnailBitmapBytes+"')");

首先,我不会通过连接字符串来构造
INSERT
查询。查看
数据库.compileStatement(…)
。尝试这样做:

SQLiteStatement stmt = db.compileStatement("INSERT INTO paths (path, thumbnail) values (?, ?)");
stmt.bindString(1, serverPath);
stmt.bindBlob(2, thumbnailBitmapBytes);
long newRowId = stmt.executeInsert();

然后,当需要获取数据时,您可以使用已经共享的代码。

您可以共享用于填充表的代码吗?长newRowId还有什么用途?我不能把stmt.executeInsert()放进去吗?别担心,一切都很好!非常感谢您抽出时间!:数据存在
long newRowId
值,允许您对新行的SQLite
rowid
值执行某些操作。。如果不需要,可以忽略它:)