Heim >Backend-Entwicklung >C++ >Spielt die Reihenfolge der OleDbCommand-Parameter eine Rolle, wenn CommandType Text ist?

Spielt die Reihenfolge der OleDbCommand-Parameter eine Rolle, wenn CommandType Text ist?

DDD
DDDOriginal
2024-12-30 17:46:12152Durchsuche

Does OleDbCommand Parameter Order Matter When CommandType is Text?

OleDbCommand-Parameterreihenfolge und -priorität: Ein Fall falsch ausgerichteter Erwartungen

Beim Erstellen von Abfragen mit OleDbCommand ist es entscheidend, die genaue Reihenfolge der Parameter sicherzustellen folgt der Reihenfolge in der SQL-Anweisung. Ein weit verbreitetes Missverständnis beruht auf der Annahme, dass benannte Parameter diese Anforderung beseitigen. Wie jedoch aus einer ausführlichen Debugging-Sitzung hervorgeht, fehlt OleDbCommand die Unterstützung benannter Parameter, wenn CommandType auf Text gesetzt ist.

Im gegebenen Beispiel:

SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin

Die Parameter werden hinzugefügt die folgende Reihenfolge:

cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;

Es werden jedoch keine Ergebnisse zurückgegeben, was auf eine Inkonsistenz hinweist. Nach der Neuordnung der Parameter entsprechend der SQL-Anweisung wird die Abfrage erfolgreich ausgeführt:

cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;

Dies stimmt mit der Dokumentation unter http://msdn.microsoft.com/en-us/library/system.data überein. oledb.oledbcommand.parameters.aspx, in dem ausdrücklich angegeben ist, dass OleDbCommand keine benannten Parameter für SQL-Anweisungen im Textmodus unterstützt. Stattdessen müssen Fragezeichen-Platzhalter (?) verwendet werden, und die Reihenfolge der OleDbParameter-Objekte in der Sammlung muss genau ihrer Platzierung im Befehlstext entsprechen.

Das obige ist der detaillierte Inhalt vonSpielt die Reihenfolge der OleDbCommand-Parameter eine Rolle, wenn CommandType Text ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn