Interoperabilität

Microsoft.Data.Sqlite verwendet SQLitePCLRaw, um mit der nativen SQLite-Bibliothek zu interagieren. SQLitePCLRaw stellt eine dünne .NET-API über die systemeigene SQLite-API bereit. SqliteConnection und SqliteDataReader bieten Zugriff auf die zugrunde liegenden SQLitePCLRaw-Objekte, sodass Sie diese APIs direkt aufrufen können.

Im folgenden Beispiel wird gezeigt, wie sqlite3_trace aufgerufen wird, um ausgeführte SQL-Anweisungen in die Konsole zu schreiben:

// Get the underlying sqlite3 object
var db = connection.Handle;
sqlite3_trace(
    db,
    (_, statement) => Console.WriteLine(statement),
    null);

In diesem Beispiel wird wiederum gezeigt, wie Sie sqlite3_stmt_status aufrufen, um zu sehen, in wie viele SQL-VM-Schritte eine SQL-Anweisung kompiliert wurde:

// 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}");

Die SQLitePCLRaw-Objekte machen sogar einen Zeiger auf die nativen Objekte verfügbar, sodass Sie zusätzliche native SQLite-APIs mit P/Invoke aufrufen können.