【问题标题】:WPF SQLite queries exceptionWPF SQLite 查询异常
【发布时间】:2017-05-30 22:49:04
【问题描述】:

有多个相关问题,但没有一个能解决我的问题。 我有一个连接到 sqlite 数据库的 C# (WPF) 应用程序。数据库中有 2 个模型类 - Dealer 和 Order 以及 2 个对应的表。

我能够在 Dealer 表中执行 CRUD 操作,但是当尝试在 Order 表中执行相同操作时,我得到一个异常 - SQL 逻辑错误或缺少数据库。我正在粘贴一些相关代码:

对于经销商

using(SQLiteConnection conn = new SQLiteConnection(connectionString)) {
conn.Open();
using(SQLiteCommand cmd = new SQLiteCommand(conn)) {
  cmd.CommandText = "INSERT INTO Dealer(name, address, contact, note) VALUES (@Name, @Address, @Contact, @Note)";
  cmd.Prepare();
  cmd.Parameters.AddWithValue("@Name", dealer.Name);
  cmd.Parameters.AddWithValue("@Address", dealer.Address);
  cmd.Parameters.AddWithValue("@Contact", dealer.Contact);
  cmd.Parameters.AddWithValue("@Note", dealer.Note);
  try {
   result = cmd.ExecuteNonQuery();
  }

订购

using(SQLiteConnection conn = new SQLiteConnection(connectionString)) {
conn.Open();
using(SQLiteCommand cmd = new SQLiteCommand(conn)) {
  cmd.CommandText = "INSERT INTO Order(dealer_id, note) VALUES (@DealerId, @Note)";
  cmd.Prepare();
  cmd.Parameters.AddWithValue("@DealerId", order.DealerId);
  cmd.Parameters.AddWithValue("@Note", order.Note);
  try {
   result = cmd.ExecuteNonQuery();
  }

我在cmd.ExecuteNonQuery(); Order 语句中得到了异常。

我已经交叉验证了列名拼写并尝试了SELECT * FROM Order,它再次返回了相同的异常。

我还尝试了上面 For Order 代码中的SELECT name FROM sqlite_master WHERE type='table' AND name='Order'; 来检查表是否存在并返回正确的表名。

请帮忙。提前致谢。

【问题讨论】:

    标签: c# wpf visual-studio-2015 sqlite


    【解决方案1】:

    ORDER 是 SQLite 中的保留关键字,因此您应该引用它,例如使用 [ ... ]

    cmd.CommandText = "INSERT INTO [Order] (dealer_id, note) VALUES (@DealerId, @Note)";
    

    SQLite中有四种引用关键字的方式:https://sqlite.org/lang_keywords.html

    【讨论】:

      猜你喜欢
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2010-11-01
      • 2015-10-07
      • 2011-04-21
      • 2018-04-07
      相关资源
      最近更新 更多