Hier ist ein Beispiel für die Verwendung von OleDbCommand und ExecuteNonQuery (ich nahm es aus einem Handbuch auf msdn.microsoft.com). Ich möchte die Abfrage überprüfen, die vor der Ausführung generiert wurde.Abfragetext herausfinden, bevor Sie ExecuteNonQuery() ausführen
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();
die Abfrage herausfinden, die hier ausgeführt wird
command.ExecuteNonQuery();
// Change parameter values and call ExecuteNonQuery.
command.Parameters[0].Value = 21;
command.Parameters[1].Value = "SecondRegion";
command.ExecuteNonQuery();
}
}
Gibt es eine Möglichkeit, es zu tun? Ich benutze PgSqlCommand - das ist PostgreSQL-Äquivalent von OleDbCommand und erhalten unbeschriebene Ausnahme. Ich war in der Lage, diese Abfrage zu erstellen und herauszufinden, was der Fehler war, indem ich Command.Parameters umblätterte und Fragesymbole in Command.CommandText durch die Werte von paremeter ersetzte, aber ich hoffe, dass es eine integrierte Methode zum Abrufen dieser Abfrage gibt.
Verwandte: http://stackoverflow.com/questions/178857/oledb-ado-net-get-the-commands-text-with-all-parameters-replaced –
Eine Möglichkeit, eine Abfrage zu beheben: http: // stackoverflow.com/questions/37670358/get-oledbcommandbuilder-s-generated-sql-commands/38118349#38118349 – plavozont