private static void ProfileCallback(SQLiteTraceEvents eventCode, IntPtr userData, IntPtr pStmt, IntPtr pDuration) { var handle = GCHandle.FromIntPtr(userData); var connection = (SQLiteConnection)handle.Target; StatementCompletedEventHandler handler = connection.m_statementCompleted; if (handler != null) { var sql = FromUtf8(NativeMethods.sqlite3_sql(pStmt)); var nanoseconds = Marshal.ReadInt64(pDuration); handler(connection, new StatementCompletedEventArgs(sql, TimeSpan.FromMilliseconds(nanoseconds / 1000000.0))); } }
public static extern int sqlite3_trace_v2(SqliteDatabaseHandle db, SQLiteTraceEvents eventsMask, SQLiteTraceV2Callback callback, IntPtr userData);