c# - 使用参数从 DbCommand 获取 SQL 查询字符串

标签 c# mysql sql

就在用 C# 对 MySQL 数据库执行 SQL 查询之前,我想记录将要执行的查询。我现在所拥有的显然只记录 SELECT * FROM foo WHERE Id = @Id 我想看到 SELECT * FROM foo WHERE Id = 5 的地方。我该怎么做?

    DbCommand dbCommand = dbFactory.CreateCommand();
    dbCommand.CommandText = "SELECT * FROM foo WHERE Id = @Id";

    DbParameter param = dbCommand.CreateParameter();
    param.ParameterName = "@Id";
    param.Value = 5;

    dbCommand.Parameters.Add(param);

    dbConnection.Open();
    Log.AddVerbose(String.Format("SQL query: {0}", dbCommand.CommandText));
    dbCommand.ExecuteReader();

最佳答案

如果您尝试登录,您可以使用这样的扩展方法。

public static string GetGeneratedQuery(this SqlCommand dbCommand)
{
    var query = dbCommand.CommandText;
    foreach (var parameter in dbCommand.Parameters)
    {
            query = query.Replace(parameter.ParameterName, parameter.Value.ToString());
    }

    return query;
}

你可以像这样使用它。

Log.AddVerbose(String.Format("SQL query: {0}", GetGeneratedQuery(dbCommand)));

关于c# - 使用参数从 DbCommand 获取 SQL 查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24291036/

相关文章:

mysql - 无法在内部联接上查询多个值

mysql - 如何用MySQL存储3位小数

php - 用laravel迁移一张表,错误 "MySQL server has gone away"和 "Packets out of order"

sql - 使 ID 属性在 XML 中唯一

sql - 如何将一个查找事件的输出用于 ADF 中的另一查找事件?

javascript - 光 slider 数据拇指图像路径未使用 Eval() 从数据库绑定(bind)

c# - 从 Web 服务返回到 Android TextView 的数组打印 anyTpe{String 而不是仅打印值

c# - 团结 : Speech Recognition is not supported on this machine

java - Android SQLite 列.....不是唯一的

c# - 如何检查 RedirectToRouteResult 生成的 URL?