2012-12-14 85 views
-1

我想創建一個簡單的Android應用程序,它使用SQLiteDatabase(不使用SQLiteOpenHelper)創建數據庫。所以數據庫創建和表創建sql成功執行沒有任何問題/例外。Android + Sqlite:表創建SQL沒有影響

現在的問題是,當我重新打開相同的數據庫,創建的早期表不存在!

我使用下面的代碼檢查表是否存在:

   Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+ sqlQueryString +"'", null); 
       if(cursor!=null) { 
        if(cursor.getCount() == 0) { 
         //error handling code here 
        } 
        cursor.close(); 
       } 

顯然是在if(cursor.getCount() == 0)狀態結束。

我拉的DB文件,並與PC上的sqlite viewer檢查,早先創建的表根本不存在。

所以我的問題是如何驗證我的創建表查詢已正確創建表?


添加所需的信息:

Create table ExampleTable (ROWID integer primary key autoincrement , FIRSTNAME text , LASTNAME text ) ; 

加入了Android的代碼執行上面的查詢:

  db.beginTransaction(); 
      db.execSQL(sqlQueryString); 
      db.endTransaction(); 
+1

向我們展示CREATE TABLE查詢和執行它的代碼。 –

+1

你必須setTransactionSuccessful(),否則事務將被回滾...(正如beginTransaction文檔中明確指出的那樣) – njzk2

回答

1

你需要調用db.setTransactionSuccessful()你結束交易之前,或否則假定操作失敗並且事務回滾。

典型交易的用法是:

db.beginTransaction(); 
try { 
    // execute DB queries here 
    db.setTransactionSuccessful(); 
} finally { 
    db.endTransaction(); 
} 

感謝njzk2首先提及在註釋中的解決方案。