簡體   English   中英

使用Parameters從DbCommand獲取SQL查詢字符串

[英]Getting SQL query string from DbCommand with Parameters

就在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)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM