以下是使用OleDbCommand和ExecuteNonQuery的示例(我从msdn.microsoft.com上的手册中获取)。我想查看在执行之前生成的查询。
private static void OleDbCommandPrepare(string connectionString)
{
using (OleDbConnection connection = new
OleDbConnection(connectionString))
{
connection.Open();
// Create the Command.
OleDbCommand command = new OleDbCommand();
// Set the Connection, CommandText and Parameters.
command.Connection = connection;
command.CommandText =
"INSERT INTO dbo.Region (RegionID, RegionDescription) VALUES (?, ?)";
command.Parameters.Add("RegionID", OleDbType.Integer, 4);
command.Parameters.Add("RegionDescription", OleDbType.VarWChar, 50);
command.Parameters[0].Value = 20;
command.Parameters[1].Value = "First Region";
// Call Prepare and ExecuteNonQuery.
command.Prepare();
找出正在执行的查询
command.ExecuteNonQuery();
// Change parameter values and call ExecuteNonQuery.
command.Parameters[0].Value = 21;
command.Parameters[1].Value = "SecondRegion";
command.ExecuteNonQuery();
}
}
有没有可行的方法呢?我正在使用PgSqlCommand - 这是PostgreSQL相当于OleDbCommand并获得未描述的异常。我能够构建该查询并通过循环Command.Parameters并使用paremeter的值替换Command.CommandText中的问题符号来查找错误是什么,但我希望有一个内置方法来获取该查询。
答案 0 :(得分:1)
没有直接的方法来检查生成的查询,但另一种方法是您可以使用字符串格式而不是命令。
var query= String.Format(
"INSERT INTO dbo.Region (RegionID, RegionDescription)
VALUES ({0}, {1})", 20,"First Region" );
command.CommandText = query;## Heading ##
检查查询的其他方法是使用Profiler,即在sql server的情况下,SQL Profiler显示在数据库上触发了哪个查询。