2016-11-28 35 views
-1

任何人都可以解釋這個方法有什麼問題嗎?日誌說有一個語法錯誤,但我無法看到它。這個SQLite在AndroidStudio中創建Statement有什麼問題

下面的代碼:

public void onCreate(SQLiteDatabase sqLiteDatabase) { 
     String createTable = "CREATE_TABLE " + MOVIES_DB + "(" 
       + TITLE + " TEXT, " 
       + OVERVIEW + " TEXT, " 
       + POSTER_PATH + " TEXT, " 
       + RELEASE_DATE + " TEXT, " 
       + ORIGINAL_TITLE + " TEXT, " 
       + ORIGINAL_LANGUAGE + " TEXT, " 
       + BACKDROP_PATH + " TEXT, " 
       + ID + " INTEGER PRIMARY KEY, " 
       + VOTE_COUNT + " TEXT, " 
       + POPULARITY + " TEXT, " 
       + VOTE_AVERAGE + " TEXT, " 
       + ADULT + " TEXT, " 
       + VIDEO + " TEXT, " 
       + GENRE_IDS + " TEXT, " 
       + HISTORY_USER + " TEXT, " 
       + WATCH_LATER + " TEXT, " 
       + FAVORITE_FLAG + " INTEGER DEFAULT 0" 
       + ")"; 


     sqLiteDatabase.execSQL(createTable); 
    } 

它用來工作。我添加了FAVORITE_FLAG,現在它不運行。我也試過用INTEGER NOT NULL DEFAULT 0FAVORITE_FLAG

+2

'CREATE_TABLE'需要一個空間,而不是一個'_' –

+0

非常感謝克林斯曼。 –

回答

0

正如@Juergen D所說,CREATE TABLE佔用一個空格而不是和下劃線。

查看SQLite的CREATE TABLE Documentation

BTW;首先嚐試把你的id/PK聲明,因爲它是常見的做法(多邏輯)


SQL Fiddle

SQLite的(SQL.js)架構設置

CREATE TABLE MOVIES_DB(
"ID" INTEGER PRIMARY KEY, 
"TITLE" TEXT, 
"OVERVIEW" TEXT, 
"POSTER_PATH" TEXT, 
"RELEASE_DATE" TEXT, 
"ORIGINAL_TITLE" TEXT, 
"ORIGINAL_LANGUAGE" TEXT, 
"BACKDROP_PATH" TEXT, 
"VOTE_COUNT" TEXT, 
"POPULARITY" TEXT, 
"VOTE_AVERAGE" TEXT, 
"ADULT" TEXT, 
"VIDEO" TEXT, 
"GENRE_IDS" TEXT, 
"HISTORY_USER" TEXT, 
"WATCH_LATER" TEXT, 
"FAVORITE_FLAG" INTEGER DEFAULT 0 
); 

Insert into MOVIES_DB Values(1,"test","test","test 7", 
    "test","test 12","test","test","test","test","test", 
    "test","test","test","test","test",2); 

查詢1

select ID, TITLE, FAVORITE_FLAG from MOVIES_DB 

Results

| ID | TITLE | FAVORITE_FLAG | 
|----|-------|---------------| 
| 1 | test |    2 |