在我的代码中,我使用的是参数化查询,例如:
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
中的最新库非常感谢任何帮助。
答案 0 :(得分:1)
只需将Parameters
数组与CommandText
一起转储到日志中。
答案 1 :(得分:1)
如果我错了(我这里没有源代码),有人纠正我,但是iirc没有“实际的命令文本”。我很确定DB的解析器将您的输入(语句+参数)直接转换为解析树,而没有中间的人类可读的SQL语句。
答案 2 :(得分:0)
你走了,
而不是调试,只需将其转储到您的日志中:
cmd.Parameters.AddWithValue("@Test", 42);
Debug.Print(cmd.CommandText);
foreach (SqlParameter param in cmd.Parameters)
{
Debug.Print(param.ParameterName + ": " + param.Value.ToString());
}
答案 3 :(得分:0)
在这里
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);
}