是否有任何方法可以查看参数化SqliteCommand的实际命令文本
本文关键字:SqliteCommand 文本 命令 参数 任何 方法 是否 | 更新日期: 2023-09-27 18:22:10
在我的代码中,我使用参数化查询,例如:
INSERT INTO table_name VALUES(?,?,?,?);
然后我用程序添加参数(例如整数值1、2、3、4),执行命令,一切都很好,但我想添加一个记录实际执行的SQL的日志输出:
INSERT INTO table_name VALUES(1,2,3,4);
我目前还看不到这样做的方法。
我使用的是.NET 3.5、C#3和http://system.data.sqlite.org
如有任何帮助,我们将不胜感激。
如果我错了,有人会纠正我(我这里没有源代码),但iirc没有"实际的命令文本"。我非常确信DB的解析器将您的输入(语句+参数)直接转换为解析树,而不需要中间的可读SQL语句。
只需将Parameters
数组和CommandText
一起转储到日志中。
给你,
与其进行调试,不如将其转储到日志中:
cmd.Parameters.AddWithValue("@Test", 42);
Debug.Print(cmd.CommandText);
foreach (SqlParameter param in cmd.Parameters)
{
Debug.Print(param.ParameterName + ": " + param.Value.ToString());
}
此处,
public void CommandTextToConsole(SQLiteCommand cmd)
{
StringBuilder sb = new StringBuilder(cmd.CommandText);
foreach (SQLiteParameter p in cmd.Parameters)
{
sb.Replace(p.ParameterName, "'" + p.Value.ToString() + "'");
}
Console.WriteLine(sb);
}