我創建了一個數據庫並在其上創建了一些表。但是在某些時候,我做錯了,所以應用程序崩潰onStart。下面是我的一些代碼部分:SQLite插入錯誤開始
private SQLiteStatement insertUserInfos;
private static final String TN_INFO = "UserInfos";
private static final String CREATE_TABLE_INFO = "CREATE TABLE "
+ TN_INFO
+ " (\"name\" TEXT, \"surname\" TEXT, \"mail\" TEXT, \"password\" TEXT, \"birthyear\" TEXT, \"currentcity\" TEXT, \"futurecity\" TEXT, \"check\" TEXT) ";
private static final String INSERT_INFOS = "INSERT INTO "
+ TN_INFO
+ " (name, surname, mail, password, birthyear, currentcity, futurecity, check) Values (?,?,?,?,?,?,?,?) ";
public DBHelper(Context context) {
this.ctx = context;
DBOpenHelper db = new DBOpenHelper(ctx);
database = db.getWritableDatabase();
insertUserInfos = database.compileStatement(INSERT_INFOS);
}
private class DBOpenHelper extends SQLiteOpenHelper {
public DBOpenHelper(Context context) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_INFO);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
而且我得到這個錯誤:
06-27 22:42:01.870:E/AndroidRuntime(16550):android.database.sqlite:致.SQLiteException:接近「check」:語法錯誤:,編譯時:INSERT INTO UserInfos(姓名,郵件,密碼,birthyear,currentcity,futurecity,check)值(?,?,?,?,?,?,? ,?)
我檢查了一堆,但我看不到這條線上的任何錯誤。任何幫助都會很好。
這可能是(我不是正面的),因爲你的一些列名是SQLIte中的保留關鍵字(在這裏列出:http://www.sqlite.org/lang_keywords.html)。嘗試在INSERT INTO語句的列名稱周圍放置方括號[]或雙引號「」。 – AkiAki007
地獄是啊! =)非常感謝。我只是忽略了「CHECK」是一個關鍵字=)簡而言之,我已將該詞改爲「checkFlag」,因此它不再是關鍵字,問題就解決了! =) – yahya
順便說一句,在製作你的SQL字符串時一般使用引號。這不是必需的。 – RvdK