我意识到这是一个七年前的问题,但也许有人会发现我一直在使用的东西很有价值。
我有一个我写的通用查询助手类,它集中了很多废话。它看起来像这样。如果它的功能如下所示:
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(sql, connection))
{
AddParameters(command, parameters);
#if DEBUG
string debug = CreateDebugSQL(sql, parameters);
#endif
using (SqlDataReader results = command.ExecuteReader())
{
return method(results);
}
}
}
}
因为我不想打开探查器只是为了让字符串检查所有内容是否正确传递给它,所以我放置了一个函数来创建一个调试字符串。这是一个杂物,它用于调试,所以它不漂亮并且需要一些修整,但是:
static private string CreateDebugSQL(string sql, List<SqlParameter> parameters)
{
string debugSQLString = sql.Substring(0, sql.IndexOf('@'));
foreach (SqlParameter parameter in parameters)
{
string val = string.IsNullOrWhiteSpace(parameter.Value.ToString()) ? "" : parameter.Value.ToString();
debugSQLString = debugSQLString + parameter.ParameterName + " = '" + val + "', ";
}
return debugSQLString; //just so we can breakpoint here to read it
}
您肯定会希望使其适应您正在做的任何事情,但它在重建 SQL 字符串时相当可靠。