Heim >Backend-Entwicklung >C++ >Warum ist die Parameterreihenfolge in OleDbCommand wichtig, wenn Textbefehle verwendet werden?
OleDbCommand-Parameterreihenfolge und -Priorität
Beim Versuch, eine Abfrage zu debuggen, wurde festgestellt, dass die Reihenfolge der Parameter in einem OleDbCommand die beeinflussen kann Ergebnisse. Wenn die Parameter in der falschen Reihenfolge hinzugefügt wurden:
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin; cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
Es wurden keine Ergebnisse zurückgegeben. Wenn die Parameter jedoch in derselben Reihenfolge hinzugefügt wurden, in der sie in der Abfrage angezeigt wurden:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
die Abfrage funktionierte ordnungsgemäß.
Diese Diskrepanz ergibt sich aus der Tatsache, dass OleDbCommand keine Namen unterstützt Parameter für Textbefehle. Wie auf MSDN dokumentiert:
Der OLE DB .NET-Anbieter unterstützt keine benannten Parameter für die Übergabe von Parametern an eine SQL-Anweisung oder eine gespeicherte Prozedur, die von einem OleDbCommand aufgerufen wird, wenn CommandType auf Text festgelegt ist. In diesem Fall muss der Fragezeichen-Platzhalter (?) verwendet werden.
Daher ist bei der Verwendung von Textbefehlen mit OleDbCommand die Reihenfolge, in der Parameter zur Sammlung hinzugefügt werden, entscheidend. Die Reihenfolge muss direkt mit der Reihenfolge der Platzhalter-Fragezeichen im Befehlstext übereinstimmen.
Das obige ist der detaillierte Inhalt vonWarum ist die Parameterreihenfolge in OleDbCommand wichtig, wenn Textbefehle verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!