Bei einem 40-minütigen Versuch, eine Abfrage zu debuggen, wurde festgestellt, dass die Reihenfolge der Parameter eine entscheidende Rolle spielt. Die betreffende Abfrage lautet wie folgt:
SELECT * FROM tblSomething WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
Als die Parameter jedoch in der folgenden Reihenfolge hinzugefügt wurden:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin; cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
wurden keine Ergebnisse zurückgegeben. Durch Umkehren der Reihenfolge von @dtDebut und @dtFin wurde das Problem behoben.
Anfangs wurde angenommen, dass benannte Parameter eingeführt wurden, um solche Reihenfolgeabhängigkeiten zu vermeiden. Allerdings laut MSDN:
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 gesetzt ist. In diesem Fall muss der Fragezeichen-Platzhalter (?) verwendet werden.
Daher ist es wichtig, die richtige Reihenfolge der Parameter einzuhalten, wenn OleDbCommand mit Parametern verwendet wird, die mithilfe des Fragezeichen-Platzhalters angegeben werden.
Das obige ist der detaillierte Inhalt vonSpielt die Parameterreihenfolge in OleDbCommand-Abfragen mit Fragezeichen-Platzhaltern eine Rolle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!