2017-10-05 61 views
-2

林在Android的SQLite和我繼續得到同樣exceotion,我不明白爲什麼我的sqlite查詢有什麼問題?使用

表是

"CREATE TABLE IF NOT EXISTS " + STUDENTS_TABLE 
          + "(" + STUDENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " 
          + STUDENT_NAME + " TEXT NOT NULL, " 
          + GROUP + " TEXT NOT NULL, " 
          + CONSTRAINT name_unique UNIQUE (STUDENT_NAME, GROUP));"; 

和我採取的是查詢(試圖讓所有的學生是在特定羣組)

 String query = "SELECT * FROM " + STUDENTS_TABLE + " WHERE group + "=" + groupName; 

唯一的例外是

android.database.sqlite.SQLiteException:近 「組」:語法埃羅R(代碼1):在編譯:SELECT * FROM WHERE組= class1的

錯誤代碼的學生:1(SQLITE_ERROR) 產生的原因:SQL(查詢)錯誤或丟失的數據庫。 (近 「組」:語法錯誤(代碼1):在編譯:SELECT * FROM學生WHERE組= 1類)

,我看不出什麼毛病我的查詢

+0

它看起來像你有一個'+',它不應該是「WHERE GROUP +」=「應該是」WHERE GROUP =「和或'組'可能需要'GROUP' – Barns

+0

什麼?我無法理解 – Yanshof

+0

Group也是SQL中的一個關鍵字,你應該在你的查詢中引用它,就像「group」一樣(你可能不得不避開引號) –

回答

1

你必須把報價,所以sqlite會檢測到它作爲一個字符串。試試這個:

String query = "SELECT * FROM `" + STUDENTS_TABLE + "` WHERE `group` + "='" + groupName +"'"; 
+1

字符串文字需要單引號 – user700390

+1

雖然語法在技術上不正確,但它仍然可能仍然在某些情況下工作,因爲如果在使用雙引號(例如:「key」或「glob」)的關鍵字中使用了i t不能被解析爲一個標識符,但是在允許字符串字面量的情況下,則該標記被理解爲字符串文字而不是標識符。如果存在與文字匹配的有效標識符,它可能會產生神祕的結果。 – user700390

+0

感謝您的糾正:D – zihadrizkyef