Benutzer mit den meisten Antworten
DataReader - Wertabfrage per Variable erzeugt SQLException

Frage
-
Ich habe ein Problem mit einem DataReader:
Es gibt eine Collection, in der die Spaltennamen definiert sind.
Bei der Abfrage kommt es aber ab der zweiten Spalte zu einer SQl Exception. Wenn ich aber die Spalten Richtig per String eingebe geht es...
Woran liegt das?
Beispiel:
DTR.Read()
s= DTR.Item("Tan")
s= DTR.Item("TableName")
In diesem Fall bekomme ich kein Problem alle Resultate.
s= DTR.Item(<collection>.Item(1)) -->geht
s = DTR.Item(<collection>.Item(2)) --> ergibt Exception....
auch wenn ich <collection>.item(2).tostring oder cstr(<collection>.item(2)) gleiches problem....
Woran kann das liegen?
Antworten
-
Danke an alle... Ich denke ich habe den Fehler... Es hat sich ein Leerzeichen eingeschlichen.
Gruss
Torsten
- Als Antwort markiert Pattasatto Freitag, 8. Oktober 2010 12:03
Alle Antworten
-
Hallo Pattasatto,
liefert die Abfrage nur die 2 Felder? Index-Werte sind in .NET immer Zero-based, es müssten also Item(0) und Item(1) sein; 2 ist ausserhalb des Indexbereiches und dass sollte die Exception auch melden.
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de -
Hi,
Es gibt eine Collection, in der die Spaltennamen definiert sind.
Bei der Abfrage kommt es aber ab der zweiten Spalte zu einer SQl Exception. Wenn ich aber die Spalten Richtig per String eingebe geht es...
ausgehend von deiner anderen Frage: Sind die Items direkt die Stringwerte? Oder ist Item( <Index> ) ein Objekt und dort gibt es wiederum eine Property "Name" oder sowas? Falls letzteres, musst Du das natürlich auch angeben.
Bzgl. der Exception: Es ist immer hilfreich, die vollständige und genaue Fehlermeldung hier wiederzugeben. SqlException kann viel sein.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan, hallo Olaf,
Ja, die Werte sind String-Werte (kommen aus einer Structure)
Mit Zero Based, sollte es ja nicht das Problem sein, wenn ich doch wie folgt abrufe:
For Each Item as ParamaterStructure in <collection>
wenn ich in der For Each Schleife die collection auswerte bzw. die zurückgegebenen Werte sind diese gesetzt.
SQLException: Index Out of Range - TableName
Ich baue mal eine DBNull Prüfung ein...
Gerade gemacht DBNull ist False, sprich Wert ist drin
******************** EXCEPTION ANALYSE
Update: Habe die Exception weiter analysiert. Beim DataReader knallt er bei der Exception und nicht bei einer SQl Exception raus. Dabei gibt er den Namen des Parameterwertes an, sprich: TableName
Ich vermute, dass er den Namen TableName nicht als Indexwert anerkennt.... Aber der Rückgabewert und die Überschrift lautet TableName.... Nur dass er halt in der Variablen und nicht in "" steht...
Sprich: "TableName" // DTR.Item("TableName") --> geht
Dim s as string = "TableName" // DTR.Item(s) ---> geht nicht
- Bearbeitet Pattasatto Freitag, 8. Oktober 2010 11:41 Exception Analyse
-
Hi,
Ja, die Werte sind String-Werte (kommen aus einer Structure)
Mit Zero Based, sollte es ja nicht das Problem sein, wenn ich doch wie folgt abrufe:
For Each Item as ParamaterStructure in <collection>
Item.Name
und nicht
<Collection>.Item( 1 )
schreiben.
Irgendwie beschleicht mich das Gefühl, dass Du dich da grad verzettelst. Geh es doch mal Stück für Stück an.SQLException: Index Out of Range - TableName
Das ist sicherlich nicht die genaue und vollständige Fehlermeldung.
BTW: Warum debuggst Du das ganze nicht mal und setzt entsprechende Breakpoints? Dann kannst Du die Werte auch direkt auslesen und prüfen ohne irgendwas "einbauen" zu müssen?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
alles gemacht... deswegen fuchse ich mich gerade an das Problem mit der Exception ran.
du hast natürlich Recht.... nicht Collection sondern nur item.ParameterName
Habe es jetzt erstmal mit dem Int - Wert zusammengefusselt.. aber irgendwas stimmt da nicht
**************************************
-
Danke an alle... Ich denke ich habe den Fehler... Es hat sich ein Leerzeichen eingeschlichen.
Gruss
Torsten
- Als Antwort markiert Pattasatto Freitag, 8. Oktober 2010 12:03
-
Danke an alle... Ich denke ich habe den Fehler... Es hat sich ein Leerzeichen eingeschlichen.
Wie schon gesagt: Ich denke, Du verzettelst Dich gerade. Zumindest hat es für mich den Anschein. Du hangelst dich von Fehler zu Fehler, probierst etwas, was gehen müsste, geht aber nicht, dann wieder doch, dann liegt der Fehler ganz woanders, geposteter Code stimmt nicht mit dem überein, was Du eigentlich ausgeführt hast, ...
Ist nicht böse gemeint aber evtl. solltest Du ne kurze Pause machen und dir das in Ruhe alles nochmal anschauen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community