2013-03-26 134 views
0

我無法直接插入一些數據到SQLite中使用INSERT INTO語句,它可能是一個愚蠢的錯誤,但我找不到它。INSERT INTO android SQL statment trouble

String sql = ("INSERT INTO task(task_goal) VALUES('ASDA');"); 
      this.ourDatabase.execSQL(sql); 

錯誤是:

table task has no column named task_goal 

有明確被列名爲目標任務,所以即時通訊不知道爲什麼這個錯誤是發生?

db.execSQL("CREATE TABLE " + DATABASE_TASK3 + " (" + 

      KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      KEY_GOAL + " TEXT NOT NULL);"  
    ); 

其中:

public static final String KEY_ROWID = "_id"; 
public static final String KEY_GOAL = "task_goal"; 
private static final String DATABASE_TASK3 = "task"; 
+0

執行'SELECT sql FROM sqlite_master WHERE tbl_name ='task'AND type ='table'',並告訴我們它說了什麼。 – 2013-03-26 20:09:43

回答

1

看來,你已經改變了Java代碼至少運行一次應用程序後,定義了你的表,但沒有更新SQL模式。你需要增加DATABASE_VERSION來告訴SQLiteOpenHelper有一個新的模式,它不會檢查你。


DATABASE_VERSION是傳遞給SQLiteOpenHelper構造一個共同的變量,它是不通用的,如果你不使用這個變量自己,你只需要增加你傳遞給SQLiteOpenHelper constructor任何值:

SQLiteOpenHelper (Context context, String name, 
     SQLiteDatabase.CursorFactory factory, int version) 
+0

非常感謝您的幫助! – user1876202 2013-03-26 20:51:00