這是一個使用OleDbCommand和ExecuteNonQuery(我從msdn.microsoft.com手冊中獲取它)的例子。我想查看執行之前生成的查詢。在做ExecuteNonQuery()之前找出查詢文本
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並使用參數表的值替換Command.CommandText中的問題符號來查找錯誤並找出錯誤,但我希望有一個內置方法來獲取該查詢。
相關:http://stackoverflow.com/questions/178857/oledb-ado-net-get-the-commands-text-with-all-parameters-replaced –
一種修復查詢的方法:http:// stackoverflow.com/questions/37670358/get-oledbcommandbuilder-s-generated-sql-commands/38118349#38118349 – plavozont