将文本文件作为Blob数据插入SQLite数据库

时间:2012-03-14 11:00:37

标签: java android

我使用表USER_DETAILS(USER_ID varchar,USER_NAME varchar,USER_INFO blob)在sqlite中创建了一个数据库。我尝试创建一个文件,将其转换为byteArray并将其作为blob存储在表中.db和表得到了创造但不是价值观。这是我的代码。有人可以指导如何将blob数据插入表中吗?

create file:`String fileNameDb = fileName + mTextDocNo ++;

        FileOutputStream fis = (FileOutputStream) openFileOutput(
                fileNameDb, Context.MODE_PRIVATE);
        System.out.println("Create File " + fis);

        byte[] textFileArray = new byte[1024];
        int i = 0;
        while (i < textFileArray.length) {
            fis.write(textFileArray);
        }
        System.out.println("Created the byteArray " + textFileArray);

        ObjectOutputStream oos = new ObjectOutputStream(fis);
        oos.writeChars(inputData);

        System.out.println("Calling the createNoteMethod------------>>>");
        mDbHelper.createNote(fileNameDb, inputData + fileNameDb,
                textFileArray);
        oos.flush();
        oos.close();
        fis.close();

插入stmt方法:

stmt = mDb.compileStatement("INSERT INTO USER_DETAILS VALUES(?,?,?)");
stmt.bindString(1, user_id);
stmt.bindString(2, user_name);
stmt.bindBlob(3, user_info);
stmt.executeInsert();

当我尝试创建byteArray

时,我得到以下异常
  

03-14 17:07:07.674:WARN / System.err(613):java.io.IOException:设备上没有剩余空间   03-14   17:07:07.694:WARN / System.err(613):at org.apache.harmony.luni.platform.OSFileSystem.write(Native Method)

03-14 17:07:07.704:WARN / System.err(613):at dalvik.system.BlockGuard $ WrappedFileSystem.write(BlockGuard.java:171)

03-14 17:07:07.704:WARN / System.err(613):at java.io.FileOutputStream.write(FileOutputStream.java:300)

03-14 17:07:07.715:WARN / System.err(613):at java.io.FileOutputStream.write(FileOutputStream.java:256)

03-14 17:07:07.715:WARN / System.err(613):at com.example.FileSharing.FileSharingActivity.createFile(FileSharingActivity.java:51)

1 个答案:

答案 0 :(得分:0)

您的代码存在 许多 问题:

  • 您正在打开文件输出流,但您的变量名称是 误导(fis
  • 然后将一个空数组写入此流,1024次
  • 然后创建一个ObjectOutputStream,将其链接到。{1}} FileOutputStream并写出一些随机对象 您的代码示例中未显示定义。
  • 您在关闭流之前调用方法,这是一个 潜在的错误,特别是如果你(我猜测),重新打开 方法中的流和对它们执行操作。
  • 你的mDbHelper方法的第二个参数,你真的 打算将输入对象与输出文件名连接?

修复所有这些错误,然后在您遇到问题后编辑问题。