gpt4 book ai didi

c# - SqliteConnection Trace 事件拒绝触发

转载 作者:IT王子 更新时间:2023-10-29 06:21:44 26 4
gpt4 key购买 nike

我已经使用 NUGET 将 Sqlite Core 包安装到我的 c# 项目中:

>Install-Package System.Data.SQLite.Core

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

var data = new SQLiteConnection(connectionString);

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

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 逻辑,但它拒绝触发。

如果不触发,这个事件有什么用?或者我需要做些什么来获得连接以触发此事件?

最佳答案

我下载了 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);
}

关于c# - SqliteConnection Trace 事件拒绝触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com