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逻辑的每一点,并且它拒绝触发.
如果不开火,那么这个活动是什么?或者我需要做些什么才能获得连接以触发此事件?
我下载了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)