【问题标题】:How do I solve the SQL(query) missing database error?如何解决 SQL(query) 缺失数据库错误?
【发布时间】:2017-02-17 10:41:33
【问题描述】:

错误代码:1 (SQLITE_ERROR) 原因:SQL(查询)错误或缺少数据库。 (靠近“=”:语法错误(代码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();
}

【问题讨论】:

  • 在你执行之前的查询是什么?请学习调试您的代码。不知道怎么做,你不会走得太远。
  • @juergend 更真实的话还没有说出来!!! :)
  • 也考虑使用参数。

标签: c# sql sqlite


【解决方案1】:

如果您使用的是 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

【讨论】:

  • @CamiloTerevinto - 是的,我知道。这就是我放置参数化查询链接的原因。
  • @CamiloTerevinto - 这并不完全正确,因为有些人设法让它在早期版本的 Visual Studio (source) 甚至没有 Visual Studio (source) 中工作。
【解决方案2】:

更改以下语句:

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 子句之前和之后添加一个空格,例如“ Where ”

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多