首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android SQLite UPDATE 語法錯誤:WHERE 子句不能用逗號

     編輯:程式設計疑難解答

程式碼中 bupdate 按鈕的 SQL:

String sql = "update user set ecode='"+ecode.getText()+"'"
           + "where ename='"+ename.getText()+"',birthday='"+ebirth.getText()
           + "'where code='"+ecode.getText()+"''";

錯誤分析

  1. SET 子句多欄位用逗號分隔,但範例中 where 關鍵字出現兩次,且 ename、birthday 之間用了逗號,應為 ename=..., birthday=...。
  2. WHERE 條件只能有一個,多條件用 AND/OR 連接。
  3. 字串拼接極易產生 SQL 注入與語法錯誤。

正確寫法(參數化)

String sql = "UPDATE user SET ename=?, birthday=? WHERE ecode=?";
db.execSQL(sql, new String[]{ename.getText().toString(),
                            ebirth.getText().toString(),
                            ecode.getText().toString()});

關鍵修正點

  • SET ename=?, birthday=?:欄位用逗號分隔。
  • WHERE ecode=?:單一條件,主鍵最佳。
  • 使用 execSQL(sql, Object[]) 避免注入與引號麻煩。

同樣檢查 bdel、bsele 的 SQL,確保語法正確。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved