2013-12-19 46 views
1

我有一個名爲「students」的SQLite數據庫。在學生表中,有2列:「student_id」和「student_name」。從Android中的SQLite中刪除

我想使用此代碼從一個SQLite表中刪除行:

String TABLE_STUDENTS = "students"; 
String COLUMN_STUDENTNAME= "student_name"; 

public void deleteUser(String name) { 
    database.delete(TABLE_STUDENTS, COLUMN_STUDENTNAME + "=" + name, null); 
} 

然而,當我試圖刪除用戶「約翰」,我從logcat的

12-19 16:28:47.132: E/SQLiteLog(14883): (1) no such column: John 
收到此錯誤信息

我試圖按照這裏的例子:Deleting Row in SQLite in Android,但我可以發誓我的語法是一樣的。

猜測我在做一些愚蠢的事,但任何人都可以幫忙?謝謝。

+0

下答案的偉大工程。另一種方法是我正在做的是'database.delete(TABLE_STUDENTS,COLUMN_STUDENTNAME +「= \」「+ name +」\「」,null);''我忘記了引用它。謝謝大家。 – jhnewkirk

+0

這是你不應該做的事情:http://bobby-tables.com/(有些人在他們的名字中有一個''',並且會破壞你的代碼) – zapl

回答

4

你可以試試:

database.delete(TABLE_STUDENTS,COLUMN_STUDENTNAME +" = ?", new String[] { name }); 
+0

工程就像一個魅力。謝謝! – jhnewkirk

1

你在做什麼是發送等效聲明DELETE FROM students WHERE student_name=John,這就是爲什麼它正在尋找一個叫做約翰·列。您需要使用該方法的第三個參數提供的參數,所以:

final String[] deleteConditions = new String[]{ name }; 
database.delete(TABLE_STUDENTS, COLUMN_STUDENTNAME + "=?", deleteConditions); 

請注意,您可以通過添加更多的條目數組deleteConditions刪除多行。

+0

「請注意,您可以通過將更多條目添加到數組deleteConditions來刪除多行」 - 請在此表單中解釋這是誤導性的。 – laalto

1

這一工程,但我會建議

db.delete(TABLE, "column_name=?", new String[] { String.valueOf(custname) }); 

或使用

String query = "DELETE FROM " +TABLE_NAME+ " WHERE " + COLUM_NAME+ " = " + "'"+VALUE +"'" ; 
db.execSQL(query);