2012-03-14 113 views
0

我在sqlite中創建了一個帶有USER_DETAILS(USER_ID varchar,USER_NAME varchar,USER_INFO blob)的數據庫。我嘗試創建一個文件,將它轉換爲byteArray並將其存儲爲blob在表中.db和表被創建,但不是值。這裏是我的代碼。有人可以指導如何將blob數據插入表中嗎?插入一個文本文件作爲Blob數據到SQLite數據庫

創建文件:`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 = 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方法)

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):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)

回答

0

你有許多問題與您的代碼:

  • 您正在打開一個文件輸出流,但你的變量名是 誤導(fis
  • ,然後寫一個空數組出此流,1024次
  • 然後,您可以創建一個ObjectOutputStream,IT連鎖的 FileOutputStream,寫了一些隨機對象,其中 定義沒有顯示在您的代碼示例中。
  • 您在關閉流之前調用方法,這是一個潛在的bug,尤其是如果您(我猜測)重新打開 流並對其執行操作。
  • 你的mDbHelper方法的第二個參數,你真的 打算連接你的輸入對象與輸出文件名嗎?

修復所有這些錯誤,然後編輯您的問題,如果您之後仍然有問題。