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
Freigeben: 2024-12-30 17:46:12
Original
149 Leute haben es durchsucht

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
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage