繁体   English   中英

android.database.sqlite.SQLiteException:靠近“SET”

[英]android.database.sqlite.SQLiteException: Near "SET"

我的 SQLite 语法有问题。 任何人都可以帮我吗? 谢谢!:)

代码:

public void updateHours(String newDate, String newStart, String Ends, String newNotes,String id){
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "UPDATE " + TABLE_NAME + " SET " + COL_1 + " = '" + newDate + "' WHERE " + COL_0 + " = '" + id + "'" + " AND SET "+ COL_2 + " = '" + newStart + "' WHERE " + COL_3 + " = '" + Ends + "'" + " AND " + " SET "+ COL_4 + " = '" + newNotes + "'" ;
    db.execSQL(query);
}

日志猫:

    android.database.sqlite.SQLiteException: near "SET": syntax error (code 1 SQLITE_ERROR[1]): , while compiling: UPDATE ALLWORKHOURS SET DATE = 'Friday, August 12, 29' WHERE ID = '31' AND SET TIMESHIFTSTART = 'cdd' WHERE TIMESHIFTENDS = 'dddd' AND  SET NOTES = '😉😂😗😂😗😂😘😂😇😇'

操作员AND是一个逻辑运算符,你应该使用这样的:

SET column1 = value1 AND column2 = value2 AND ....

在语句末尾也只使用 1 个WHERE子句。

UPDATE语句的正确语法是:

UPDATE tablename
SET column1 = value1, column2 = value2, ................
WHERE condition1 AND/OR condition2..........

您的命令语法有问题。

String query = "UPDATE " + TABLE_NAME + " SET " + COL_1 + " = '" + newDate + "' WHERE " + COL_0 + " = '" + id + "'" + " AND SET "+ COL_2 + " = '" + newStart + "' WHERE " + COL_3 + " = '" + Ends + "'" + " AND " + " SET "+ COL_4 + " = '" + newNotes + "'" ;

你不能有SET column = 'asd' WHERE something AND SET column2 = 'asd'

你应该把它改成

SET column = 'asd' AND column2 = 'asd' WHERE something

如果那些多个 WHERE 子句不同,则应该将该命令拆分为多个命令

此外,为了提高查询和命令的可读性,我建议使用插值

问题在于您的查询不能在同一个查询中设置多个。 我认为这就是你想要做的。

UPDATE ALLWORKHOURS SET DATE = 'Friday, August 12, 29' AND TIMESHIFTSTART = 'cdd' AND 
NOTES = '😉😂😗😂😗😂😘😂😇😇  WHERE ID = '31'AND TIMESHIFTENDS = 'dddd' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM