SqliteConnection跟踪事件拒绝触发

时间:2015-07-03 10:12:58

标签: c# sqlite visual-studio-2012

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

>Install-Package System.Data.SQLite.Core

我按如下方式创建数据库连接:

var data = new SQLiteConnection(connectionString);

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

data.Update += DataOnUpdate;

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

"This event is raised whenever SQLite Statement First begins executing on this connection. It only applies for the given connection"

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

无论其

当我按如下方式挂钩此事件时:

data.Trace += DataOnTrace;
它永远不会开火。我已经尝试了SELECT,UPDATE,DELETE,CREATE TABLE,TRANSACTIONS以及我能想到的Sql逻辑的每一点,并且它拒绝触发。

如果不发射,这是什么事件?或者有什么我需要做的事情来获得连接以解雇此事件?

1 个答案:

答案 0 :(得分:9)

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

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

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