我使用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逻辑的每一点,并且它拒绝触发。
如果不发射,这是什么事件?或者有什么我需要做的事情来获得连接以解雇此事件?
答案 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);
}