【问题标题】:SQLite query not executing properly in a WPF projectSQLite 查询在 WPF 项目中未正确执行
【发布时间】:2020-06-10 11:45:37
【问题描述】:

我正在开发 WPF 应用程序并使用 SQLite 数据库。我可以使用 Entity Framework 执行每个 CRUD 操作,但在某些特定情况下,我必须使用原始 SQL 查询,有时它不会返回我需要的内容。

这是一个示例代码:

using (var db = new DbContext(AppIO.DatabaseFilePath)) {
    var key = 12;
    string sql = $"SELECT COUNT(*) FROM SomeTable WHERE SomeField={key}";
    var result = db.Database.ExecuteSqlCommand(sql);
}

我简化了这个例子。这里是result,我得到的是-1。我复制了sql 字符串值(在它构建之后)并在同一数据库上的SQLiteStuido 中执行,它返回了正确的值。

DatabaseFilePath 是正确的。连接设置正确。我正在检查相同的数据库(在代码和SQLiteStudio 中)。还有什么想法吗?

【问题讨论】:

  • 我很确定您需要使用 SqlQuery 而不是 ExecuteSqlCommand。
  • 我试过了,它的工作...谢谢!

标签: c# wpf sqlite


【解决方案1】:

试试这个:

var result = db.Database.SqlQuery<int>(sql).First();

【讨论】:

    【解决方案2】:

    你必须调用SqlQuery 方法而不是ExecuteSqlCommand 方法。由于SqlQuery 返回一个 IEnumerable,你必须调用 Single。这是一种从查询中检索标量值的方法。

    using (var db = new DbContext(AppIO.DatabaseFilePath)) {
        var key = 12;
        string sql = $"SELECT COUNT(*) FROM SomeTable WHERE SomeField={key}";
        var result = db.Database.SqlQuery<int>(sql).Single();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-10
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      相关资源
      最近更新 更多