亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 SQL 表中刪除行的問題

從 SQL 表中刪除行的問題

ABOUTYOU 2022-01-12 14:08:00
我正在嘗試使用下面的代碼從 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則沒有刪除任何行,否則它獲取已刪除的行數。


查看完整回答
反對 回復 2022-01-12
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

確保您的 SQL 語法正確,并且“Plumber”是一個帶雙引號的字符串。根據我的經驗,這些錯誤通常是由不正確的列或名稱引起的。

使用這種格式:

DELETE FROM table_name WHERE condition(s)

SQLite 瀏覽器還可以幫助您可視化您的數據庫。


查看完整回答
反對 回復 2022-01-12
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

delete刪除而不是列。

如果你想擺脫一列,你需要刪除它。SQL 語法是:

alter table table_service drop column <column_name>;

我不知道如何用您正在使用的方法在 java 中表達這一點。


查看完整回答
反對 回復 2022-01-12
  • 3 回答
  • 0 關注
  • 279 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號