2015-11-30 34 views
0

我似乎無法找出我在這裏做了什麼錯誤。似乎在createNewTable方法中的create命令中出現語法錯誤。Android Sqlite創建語法錯誤

的Android SQLite的插入錯誤(語法錯誤代碼1)

我已經添加了我的數據庫代碼:

private static final String KEY_DATE = "date"; 
private static final String KEY_TIME_IN = "timeCheckIn"; 
private static final String KEY_TIME_OUT = "timeCheckOut"; 
private static final String KEY_LATITUDE_IN = "latCheckIn"; 
private static final String KEY_LONGITUDE_IN = "longCheckIn"; 
private static final String KEY_LATITUDE_OUT = "latCheckOut"; 
private static final String KEY_LONGITUDE_OUT = "longCheckOut"; 

public void createNewTable(){ 
    SQLiteDatabase db = this.getWritableDatabase(int _id); 
     Log.v("Database", "Adding Check in table: " + _id); 
     String CREATE_TABLE = " CREATE TABLE " + Integer.toString(_id) + "(" 
       + KEY_DATE + " TEXT," + KEY_TIME_IN + " TEXT," + KEY_TIME_OUT + " TEXT," 
       + KEY_LATITUDE_IN + " REAL," + KEY_LONGITUDE_IN + " REAL," + KEY_LATITUDE_OUT + " REAL," 
       + KEY_LONGITUDE_OUT + " REAL" + ")"; 
     db.execSQL(CREATE_TABLE);} 

我logcat的錯誤如下:

Caused by: android.database.sqlite.SQLiteException: near "1": syntax error (code 1): , while compiling: CREATE TABLE 1(date TEXT,timeCheckIn TEXT,timeCheckOut TEXT,latCheckIn REAL,longCheckIn REAL,latCheckOut REAL,longCheckOut REAL) 

回答

0

您有一個以數字開頭的表名。不確定SQLite是否允許,但在MySQL中,如果你的表名是一個數字,那麼對於每個查詢,你需要用雙引號指定表號。嘗試給表名添加前綴

+0

感謝了很多人,這似乎是這個問題 – user5620682

+0

勾選答案,讓別人知道的問題就解決了:) –

0

SQLite告訴你不允許非轉義的表名以數字開頭,在本例中爲數字1.如果要使用數字,則必須使用括號轉義表名,例如所以

String CREATE_TABLE = " CREATE TABLE [" + Integer.toString(_id) + "] (" 
     + KEY_DATE + " TEXT," + KEY_TIME_IN + " TEXT," + KEY_TIME_OUT + " TEXT," 
     + KEY_LATITUDE_IN + " REAL," + KEY_LONGITUDE_IN + " REAL," + KEY_LATITUDE_OUT + " REAL," 
     + KEY_LONGITUDE_OUT + " REAL" + ")"; 
+0

不一定括號 –

+0

@FaizHalde是的,我相信雙引號是標準的SQL。儘管我發現由於某些原因,大多數數據庫系統在示例中使用括號,而不是。 – Devexed

+0

這完全是一個選擇問題 –