【问题标题】:Get number of rows affected using 'Update' or 'Delete' query in SQLite-WinRT wrapper在 SQLite-WinRT 包装器中使用“更新”或“删除”查询获取受影响的行数
【发布时间】:2016-06-05 12:59:43
【问题描述】:

如何获取 SQLite-WinRT 包装器中影响删除或更新查询的行数?这是描述 Windows 运行时应用程序中 SQLite-WinRT 包装器的 CRUD 操作的blog

一些代码sn-p是:

var dbFile = await StorageFile.GetFileFromPathAsync(dbPath);
db = new SQLiteWinRT.Database(dbFile);
await db.OpenAsync(SqliteOpenMode.OpenReadWrite);
await db.ExecuteStatementAsync("DELETE FROM Customer WHERE Name = 'abc'");

谢谢!

【问题讨论】:

    标签: c# windows sqlite windows-runtime win-universal-app


    【解决方案1】:

    SQLite-WinRT 代码库不使用sqlite3_changes()sqlite3_total_changes() 这两种SQLite 提供的函数来计算受影响的记录,因此似乎没有直接的API 来获取该数字。

    但是 SQLite 具有 changes() 函数,因此您可以尝试在 DELETE 之后发出 SELECT CHANGES() 查询并读取返回值(使用 db.PrepareStatementAsyncstmt.StepAsyncstmt.GetIntAt)。

    (目前无法测试这种方法)。

    【讨论】:

    • 啊,我明白了。谢谢。我会尝试这种方法并让你知道。一个问题:假设连续有 DELETEUPDATE 查询并一一执行。 SELECT CHANGES() 查询是否仅返回 UPDATE 查询产生的受影响行数?
    • 返回最近完成的 INSERT、UPDATE 或 DELETE 语句修改、插入或删除的行数
    【解决方案2】:
    • 您可以计算受 cmd.ExecuteNonQuery() 影响的行数,如下所示
    int rowCount = Convert.ToInt32(cmd.ExecuteNonQuery());
    
    • 行数将不包含因插入或更新而受影响的行数

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2011-06-11
      • 2014-12-08
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多