如何解决SQL(查询)丢失数据库错误?

时间:2017-02-17 10:41:33

标签: c# sql sqlite

  

错误代码:1(SQLITE_ERROR)                     引起:SQL(查询)错误或缺少数据库。                         (接近" =&#34 ;:语法错误(代码1):,编译时:DELETE FROM notesWHEREid =' 1')

这是我得到的错误:

这是我的数据库处理程序的一部分,它是此错误的来源:

    public void deleteNote(String id) {
    SQLiteDatabase db = this.getWritableDatabase();
    String deleteQuery="DELETE FROM " + DatabaseValues.TABLE_NOTES + "WHERE" + DatabaseValues.NOTES_ID + "= '" + id + "'";

    db.execSQL(deleteQuery);
    db.close();
}

2 个答案:

答案 0 :(得分:2)

如果您使用的是C#6.0,使用插值字符串可以使字符串连接更加轻松,避免出现这种愚蠢的错误:

String deleteQuery= $"DELETE FROM {DatabaseValues.TABLE_NOTES} WHERE {DatabaseValues.NOTES_ID} = id";

注意:$运算符在C#6.0中可用。另外,您应该查看how to build parameterized queries,因为传递这样的参数会让您感到SQL injection

答案 1 :(得分:1)

更改以下声明:

String deleteQuery="DELETE FROM " + DatabaseValues.TABLE_NOTES + "WHERE" + DatabaseValues.NOTES_ID + "= '" + id + "'";

String deleteQuery= "DELETE FROM " + DatabaseValues.TABLE_NOTES + " WHERE " + DatabaseValues.NOTES_ID + " = '" + id + "'";

实际上,您正在将表名与where子句组合在一起。您需要在WHERE Clause之前和之后添加一个空格,如“Where”

希望它有所帮助。