2013-05-28 18 views
1

我的工作在同一時間插入多個記錄在黑莓I/O錯誤

在這裏DATABSE插入多條記錄是代碼: -

public synchronized boolean execute_Batch_Query(final JSONArray accObj) 
{ 
    boolean value = false; 

    UiApplication.getUiApplication().invokeLater(new Runnable() 
    { 
     public void run() 
     { 
      String sqlStatement = "INSERT INTO Records_Table(id ,name ,description) " +"VALUES (?,?,?)"; 

      try 
      { 
       JSONArray jsonArray = accObj; 
       int size = jsonArray.length(); 
       Statement st = db.createStatement(sqlStatement); 
       st.prepare(); 

       for(int i =0 ; i<size ; i++) 
       { 
        JSONObject jsonObj = (JSONObject)jsonArray.getJSONObject(i); 
        String id = Global.EMPTY; 
        String name = Global.EMPTY; 
        String description = Global.EMPTY; 
        id  = jsonObj.getString("id"); 
        name = jsonObj.getString("name"); 
        description = jsonObj.getString("description"); 
        st.bind(1,id); 
        st.bind(2,name); 
        st.bind(3,description); 

        st.execute(); 
        st.reset(); 


       } 
       st.close(); 
       Log.d("SQL", sqlStatement); 
      } 
      catch (Exception e) 
      { 
       Log.e(e.getMessage()); 
      } finally { 
       // close(); 
      } 
     } 
    }); 
    return value; 
} 

此代碼插入10-15在記錄一段時間,但之後我得到 磁盤I/O錯誤。請讓我知道爲什麼我得到I/O錯誤。

+0

究竟發生了什麼磁盤I/O錯誤? –

+0

感謝@Arhimed對這個問題感興趣: 我得到「異常net.rim.device.api.database.DatabaseException::磁盤I/O錯誤」這個錯誤,而批量插入 –

回答

1

這實際上不是一個答案,而只是一些考慮。

  1. 你的代碼看起來OK(意味着它應該在正常條件下工作)。

  2. 您得到net.rim.device.api.database.DatabaseException: disk I/O error。這並沒有說明確切的原因。 DatabaseException有3個子類與定義的原因:

    • DatabaseBindingException - 表示無法將參數綁定到SQL語句。
    • DatabaseIOException - 表示數據庫文件無法打開,創建,打開或創建或刪除。
    • DatabasePathException - 表示數據庫文件的路徑格式錯誤。

由於你沒有得到任何上述例外規定的,這是無法界定的實際原因。

思路:

  • 嘗試另一個SD卡
  • 做復位(取出電池)
  • 嘗試用相同的BB OS版本
  • 其他設備嘗試運行的另一個BB OS設備版本
+0

只是讓我知道..have你測試了批量插入的上述代碼... –

+0

@Mario:不,我只是徹底檢查了您的代碼和API文檔。 –

+0

嗯..你可以請讓我知道任何替代方式在BB做批量插入,因爲我在一個點...有2500+左右的記錄。在Android-Iphone中批量插入需要5秒左右的時間,但在Blackberry中需要大約6-7分鐘,我插入oneByone記錄,每次插入一次數據庫打開/關閉操作。 –