2014-02-17 66 views
0

我在創建表時遇到問題。發生了什麼是以下內容,我有一個xml文件,這是我希望在更改數據庫版本時執行的查詢。問題是它達到了處理查詢執行的高度,但沒有采取數據庫更改,奇怪的是,在我的xml文件中有兩個不同的查詢,第一次運行但不是第二次,最糟糕的是它沒有指出任何銀行錯誤,我的腳本是正確的,並返回所有查詢,但它發生,我不知道爲什麼。下面是我的函數負責執行我的XML的查詢:運行查詢後未創建表

private boolean execSqlByQuery(List<String[]> listaQuery, SQLiteDatabase db) { 
    Boolean result = false; 
    if(!listaQuery.isEmpty()){ 
     try{ 
      for(int i = 0; i < listaQuery.size(); i++){ 
       for(int j = 0; j < listaQuery.get(i).length; j++){ 
        db.beginTransaction(); 
        Log.d("SQL", listaQuery.get(i)[j].toString()); 
        db.execSQL(listaQuery.get(i)[j].toString()); 
        db.setTransactionSuccessful(); 
        db.endTransaction(); 
       } 
      } 
      result = true; 
     }catch(Exception ex){ 
      result = false; 
     }finally{ 
      listaQuery.clear(); 
     } 
    } 
    return result; 
} 
+2

1)登錄你的異常2)將'endTransaction()方法'到finally塊。 (每次調用'beginTransaction()'都必須與相應的'endTransaction()'匹配,在發生異常的情況下也是如此。) – laalto

回答

0

更改您的代碼,如:

private boolean execSqlByQuery(List<String[]> listaQuery, SQLiteDatabase db) { 
Boolean result = false; 
if(!listaQuery.isEmpty()){ 
db.beginTransaction(); 
    try{ 
     for(int i = 0; i < listaQuery.size(); i++){ 
      for(int j = 0; j < listaQuery.get(i).length; j++){ 

       Log.d("SQL", listaQuery.get(i)[j].toString()); 
       db.execSQL(listaQuery.get(i)[j].toString()); 


      } 
     } 
db.setTransactionSuccessful(); 
     result = true; 
    }catch(Exception ex){ 
     result = false; 
    }finally{ 
if (db!= null) { 
db.endTransaction(); 
} 
     listaQuery.clear(); 
    } 
} 
return result; 
}