none
DataReader - Wertabfrage per Variable erzeugt SQLException RRS feed

  • 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?

     

     

    Freitag, 8. Oktober 2010 09:41

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
    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
    Freitag, 8. Oktober 2010 09:59
  • 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
    Freitag, 8. Oktober 2010 09:59
    Moderator
  • 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
    Freitag, 8. Oktober 2010 10:55
  • 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>

    da Du deine Structure nicht zeigst, gehe ich mal von der in deinem anderen Posting aus. Für diese müsstest Du aber:

      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
    Freitag, 8. Oktober 2010 11:42
    Moderator
  • 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

    **************************************

     

     

     

    Freitag, 8. Oktober 2010 11:50
  • 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
    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
    Freitag, 8. Oktober 2010 12:15
    Moderator