Microsoft.Data.Sqlite 使用 SQLitePCLRaw 与本地 SQLite 库交互。
SQLitePCLRaw 通过本机 SQLite API 提供精简 .NET API。
SqliteConnection 和 SqliteDataReader 提供对基础 SQLitePCLRaw 对象的访问权限,从而可以直接调用这些 API。
下面的示例演示如何调用 sqlite3_trace 以将已执行的 SQL 语句写入控制台:
// Get the underlying sqlite3 object
var db = connection.Handle;
sqlite3_trace(
db,
(_, statement) => Console.WriteLine(statement),
null);
下面的示例演示如何调用 sqlite3_stmt_status 来查看 SQL 语句编译为多少个 SQLite 虚拟机步骤:
// Get the underlying sqlite3_stmt object
var stmt = reader.Handle;
var steps = sqlite3_stmt_status(
stmt,
SQLITE_STMTSTATUS_VM_STEP,
resetFlg: 0);
Console.WriteLine($"VM operations: {steps}");
SQLitePCLRaw 对象甚至公开指向本地计算对象的指针,使你可以通过 P/Invoke 调用其他本机环境的 SQLite API。