如何将BLOB存储到sqlite数据库

时间:2014-03-05 07:50:15

标签: database sqlite storage blob

请帮助,我是新的Android我不知道很多基础知识。 IM使用此代码将我的powerpoint文件存储为BLOB。但是当我跑这个。数据库甚至不会显示任何文件名作为列表。如何正确存储blob而不使用DBHELPER。因为我开始没有使用DBHELPER而且我已经离我的项目很远了。只是想通过这个项目。

String filename = FilesInFolder.get(position);
FileInputStream fis = new FileInputStream("/sdcard/" + filename);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            byte[] buffer =new byte[1024];
            int read;
            while ((read = fis.read(buffer)) != -1) {
                baos.write(buffer, 0, read);
            }
            baos.flush();
            byte[] fileByteArray = baos.toByteArray();

            notesDB.execSQL("INSERT INTO " +
                    PPT_TABLE_NAME + " (pptName,pptFile)" + 
                    " Values ('"+filename+"','"+fileByteArray+"');");

这就是我编写数据库的方式

notesDB.execSQL("CREATE TABLE IF NOT EXISTS " +
                PPT_TABLE_NAME + 
                " ( " + BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,pptName VARCHAR,pptFile BLOB);");

这就是我尝试将其视为列表的方式

Cursor c = notesDB.rawQuery("SELECT * FROM " +
            PPT_TABLE_NAME, null);



    if (c != null ) {
        if  (c.moveToFirst()) {
            do {
                String pptid = c.getString(c.getColumnIndex(BaseColumns._ID.toString()));
                String pptname = c.getString(c.getColumnIndex("pptName"));

                results.add(pptid + " " + pptname);
            }while (c.moveToNext());
        } 
    }

    this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results));

请帮助我仍然是新的Android ..

1 个答案:

答案 0 :(得分:1)

您不能轻易地将字节数组直接插入字符串中。

要插入blob,您应该使用可以处理字节数组的函数,例如insert method

ContentValues cv = new ContentValues();
cv.put("pptName", filename);
cv.put("pptFile", fileByteArray);
notesDB.insert(PPT_TABLE_NAME, null, cv);