我正在嘗試使用下面的代碼從 SQL 表中刪除一行。但是,每當我調用此方法時,我都會收到以下錯誤:android.database.sqlite.SQLiteException: no such column: Plumber (code 1): , while compile: DELETE FROM service WHERE name = Plumberpublic boolean deleteService(String name){ SQLiteDatabase db = this.getWritableDatabase(); boolean result = false; String query = "SELECT * FROM " + TABLE_SERVICE + " WHERE " + COLUMN_NAME + " = \"" + name + "\"" ; Cursor cursor = db.rawQuery(query, null); if(cursor.moveToFirst()){ String nameStr = cursor.getString(0); db.delete(TABLE_SERVICE, COLUMN_NAME + " = " + nameStr, null); cursor.close(); result = true; } db.close(); return result;}這是我的桌子public void onCreate(SQLiteDatabase db){ String CREATE_USERS_TABLE = "CREATE TABLE " + TABLE_SERVICE + "(" + COLUMN_NAME + " TEXT," + COLUMN_RATE + " TEXT," + COLUMN_CATEGORY + " TEXT," + COLUMN_SUBCATEGORY + " TEXT)"; db.execSQL(CREATE_USERS_TABLE);}
3 回答

慕慕森
TA貢獻1856條經驗 獲得超17個贊
首先,您要獲取 inCOLUMN_NAME
具有 value 的所有行name
。
接下來,您要刪除這些行中的第一行(也許它是唯一的?),因為nameStr
獲取第一列的值,即COLUMN_NAME
.
你為什么做這個?
只需執行以下語句:
int number = db.delete(TABLE_SERVICE, COLUMN_NAME + " = '" + name + "'", null);
如果number
獲取該值,0
則沒有刪除任何行,否則它獲取已刪除的行數。

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
確保您的 SQL 語法正確,并且“Plumber”是一個帶雙引號的字符串。根據我的經驗,這些錯誤通常是由不正確的列或名稱引起的。
使用這種格式:
DELETE FROM table_name WHERE condition(s)
SQLite 瀏覽器還可以幫助您可視化您的數據庫。

HUH函數
TA貢獻1836條經驗 獲得超4個贊
delete
刪除行而不是列。
如果你想擺脫一列,你需要刪除它。SQL 語法是:
alter table table_service drop column <column_name>;
我不知道如何用您正在使用的方法在 java 中表達這一點。
添加回答
舉報
0/150
提交
取消