在 SQLite-WinRT 包装器中使用 'Update' 或 'Delete' 查询获取受影响的行数

Get number of rows affected using 'Update' or 'Delete' query in SQLite-WinRT wrapper

如何获取 SQLite-WinRT 包装器中针对 Delete 或 Update 查询受影响的行数?这是 blog,它描述了 Windows 运行时应用程序中 SQLite-WinRT 包装器的 CRUD 操作。

一些代码片段是:

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'");

谢谢!

SQLite-WinRT 代码库不使用 sqlite3_changes()sqlite3_total_changes() SQLite 提供的函数来计算受影响的记录,因此似乎没有直接 API 得到那个数字。

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

(目前无法测试此方法)。

  • 您可以计算受 cmd.ExecuteNonQuery() 影响的行数,如下所示
int rowCount = Convert.ToInt32(cmd.ExecuteNonQuery());
  • rowcount 将不包含因插入或更新而受影响的行