2009-09-25 16 views
15

Ich habe diese Abfrage für die letzten 40 Minuten debuggen, und das Problem ist offenbar die Reihenfolge der Parameter nach allem.OleDbCommand Parameter Reihenfolge und Priorität

Dann füge ich die Parameter auf diese Weise hinzu, beachte, dass die beiden letzten Parameter geschaltet werden, ich bekomme keine Ergebnisse.

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

Wenn ich die Parameter so deklariere, wie sie in der Queue erscheinen, funktioniert alles perfekt.

Ich dachte, benannte Parameter waren an erster Stelle, um dieses Problem anzugehen! Was fehlt mir hier?

Danke

Antwort

29

Nach http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx OleDbCommand nicht Parameter unterstützt

Der OLE DB .NET-Provider namens nicht benannte Parameter Unterstützung für von einem OleDbCommand genannt Parameter zu einer SQL-Anweisung oder eine gespeicherte Prozedur übergeben, wenn Commandtype gesetzt wird Text. In diesem Fall muss der Fragezeichen (?) Platzhalter verwendet werden. Zum Beispiel:

SELECT * FROM Customers WHERE CustomerID = ? 

daher bei dem die Reihenfolge OleDbParameter Objekte werden das OleDbParameterCollection hinzugefügt muss direkt an die Position des Fragezeichen Platzhalter für den Parameter in dem Befehlstext entspricht.

Die Reihenfolge der Parameter ist wichtig.

+4

bizare, so haben die Namen der Parameter in der Abfrage am Ende nichts zu tun !! – 0xFF

0

nicht positiv, aber es sieht nicht wie Ihre Parameter in derselben Reihenfolge hinzugefügt werden, noch denselben Namen Werte als „@“ Pendants der Abfrage ...

@id, 
@dtDebut 
then 
@dateTraitementFin 
+0

Ja, das ist meine Frage, warum muss ich sie mit der gleichen Reihenfolge wie die @ in der Abfrage hinzufügen? – 0xFF

3

Wenn ich mich richtig erinnere, wenn die OleDbCommand in ADO.NET funktioniert ähnlich wie die älteren ADO-Bibliothek/Bibliotheken (in VB6, VBA, etc. verwendet) dann definiert die Parametersammlung Parameter nicht nach Namen, nur nach Position innerhalb der Sammlung . Dies scheint das Verhalten zu sein, das Sie gerade erleben.

Verwandte Themen