互操作性

Microsoft.Data.Sqlite 使用 SQLitePCLRaw 与本地 SQLite 库交互。 SQLitePCLRaw 通过本机 SQLite API 提供精简 .NET API。 SqliteConnectionSqliteDataReader 提供对基础 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。