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

Java 将文本文件作为Blob数据插入SQLite数据库,java,android,Java,Android,我在sqlite中创建了一个数据库,其中包含一个表USER\u DETAILS(USER\u ID varchar、USER\u NAME varchar、USER\u INFO blob)。我尝试创建一个文件,将其转换为byteArray并将其作为blob存储在表中。创建了数据库和表,但没有创建值。这是我的代码。有人可以指导如何将blob数据插入表中吗 创建文件:`String fileNameDb=fileName+mTextDocNo++ FileOutputStream

我在sqlite中创建了一个数据库,其中包含一个表USER\u DETAILS(USER\u ID varchar、USER\u NAME varchar、USER\u INFO blob)。我尝试创建一个文件,将其转换为byteArray并将其作为blob存储在表中。创建了数据库和表,但没有创建值。这是我的代码。有人可以指导如何将blob数据插入表中吗

创建文件:`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();
当我尝试创建byteArray时,会出现以下异常

03-14 17:07:07.674:WARN/System.err(613):java.io.IOException:设备上没有剩余空间 03-14 17:07:07.694:WARN/System.err(613):位于org.apache.harmony.luni.platform.OSFileSystem.write(本机方法)

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

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

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

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

您的代码有很多问题:

  • 您正在打开文件输出流,但变量名为 误导性(
    fis
  • 然后将一个空数组写入该流,1024次
  • 然后创建一个
    ObjectOutputStream
    ,将其链接到
    FileOutputStream
    并写出 代码示例中未显示的定义
  • 在关闭流之前调用一个方法,这是一个 潜在的错误,尤其是如果你是(我敢打赌),重新打开 方法中的流,并对其执行操作
  • 您的
    mDbHelper
    方法的第二个参数,您真的这样做了吗 是否打算将输入对象与输出文件名连接起来
修复所有这些错误,然后编辑您的问题,如果在此之后仍然存在问题

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();