SqliteConnection跟踪事件拒绝触发

Ste*_*ood 9 c# sqlite visual-studio-2012

我使用NUGET使用以下命令将Sqlite Core软件包安装到我的c#项目中:

>Install-Package System.Data.SQLite.Core
Run Code Online (Sandbox Code Playgroud)

我创建一个数据库连接如下:

var data = new SQLiteConnection(connectionString);
Run Code Online (Sandbox Code Playgroud)

然后我将事件处理程序挂钩到update事件,每次发生更新语句时触发该事件处理程序(出于特定业务逻辑的最后写入日期字段的目的)

data.Update += DataOnUpdate;
Run Code Online (Sandbox Code Playgroud)

这太棒了.但是,SqliteConnection类还公开了一个名为Trace的事件.文档说明了有关此事件的以下内容:

"This event is raised whenever SQLite Statement First begins executing on this connection. It only applies for the given connection"
Run Code Online (Sandbox Code Playgroud)

我读这意味着它执行与Update事件类似的功能,每当执行SQL语句时它都会触发.

然而

当我将此事件挂钩时如下:

data.Trace += DataOnTrace;
Run Code Online (Sandbox Code Playgroud)

它永远不会发射.我已经尝试过SELECT,UPDATE,DELETE,CREATE TABLE,TRANSACTIONS以及我能想到的Sql逻辑的每一点,并且它拒绝触发.

如果不开火,那么这个活动是什么?或者我需要做些什么才能获得连接以触发此事件?

LSU*_*Net 9

我下载了System.Data.SQLite包并编写了以下代码.跟踪事件似乎对我来说是好事.

给定一个SQLite数据库,其中包含一个名为"tbl1"的表(schema不重要)

static void Main(string[] args)
    {

        using (SQLiteConnection conn = new SQLiteConnection(@"Data Source=C:\dev\Sandbox\Sandbox.Console\test.db;Version=3;"))
        {
            conn.Open();
            conn.Trace += conn_Trace;

            using(SQLiteCommand cmd = new SQLiteCommand("Select * from tbl1", conn))
            {
                using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd))
                {
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                }
            }

            conn.Trace -= conn_Trace;
            conn.Close();
        }
    }

    static void conn_Trace(object sender, TraceEventArgs e)
    {
        System.Console.WriteLine(e.Statement);
    }
Run Code Online (Sandbox Code Playgroud)

  • 关键是你必须订阅调用Open的事件_after_ (6认同)