在执行ExecuteNonQuery()之前找出查询文本
本文关键字:查询 文本 执行 ExecuteNonQuery | 更新日期: 2023-09-27 17:53:11
这里是使用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找到错误所在。参数和替换命令中的疑问符号。CommandText与参数的值,但我希望有一个内置的方法来获得该查询。
没有直接的方法来检查生成的查询,但是您可以使用字符串格式代替命令。
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显示哪个查询是在数据库上触发的