是否有任何方法可以查看参数化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

如有任何帮助,我们将不胜感激。

是否有任何方法可以查看参数化SqliteCommand的实际命令文本

如果我错了,有人会纠正我(我这里没有源代码),但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);
}