2010-10-30 108 views
0
private static final String DB_NAME = "MyDebts.db"; 
private static final String CREATE_DB_QUERY = 
    "CREATE TABLE " + Dao.CONTACTS_TABLE_NAME + " (ContactId varchar(64), Credit integer);\n" + 
    "CREATE TABLE " + Dao.SETTINGS_TABLE_NAME + " (Name varchar(64), Value varchar(64));" 
    ; 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREATE_DB_QUERY); 
    } 

正如我在調試模式下db.execSql收益看,沒有任何異常,但隨後在這段代碼沒有這樣的表例外:在android系統

String lastStepIndexString = null; 
    try { 
    lastStepIndexString = SettingsDao.readSetting("last-step-index"); 
    } catch (Exception ex) { 
    makeToast(ex.getMessage()); 
    } 

catch() ......由異常與消息觸發一樣'沒有名稱的表'首選項'' 任何人都可以告訴我這個問題?

回答

0

是否有名爲Preferences的表創建?

使用這裏描述檢查數據庫的方法: http://developer.android.com/guide/developing/tools/adb.html#sqlite

我不知道什麼是DAO.SETTINGS_TABLE_NAME,也許你可以嘗試直接創建數據庫的名稱偏好。

private static final String CREATE_DB_QUERY = 
    "CREATE TABLE " + Dao.CONTACTS_TABLE_NAME + " (ContactId varchar(64), Credit integer);\n" + 
    "CREATE TABLE Preferences(Name varchar(64), Value varchar(64));"; 
+0

感謝亞行指南鏈接。與「adb ...」我看到只有一個表已創建。純文本查詢(無常數)對我沒有結果。如果我嘗試切換表的順序來創建我看到模擬器只創建一個表,它是查詢:首選項表中的第一個表。那麼我嘗試(只是現在寫rhis評論=))分離查詢一個拉「db.execSQL(CREATE_DB_QUERY_1); db.execSQL(CREATE_DB_QUERY_2);」它的工作原理! – semen 2010-10-30 20:31:38

0

解決辦法:單獨的查詢一拉:

db.execSQL(CREATE_DB_QUERY_1); 
db.execSQL(CREATE_DB_QUERY_2);