Announcement

Collapse
No announcement yet.

Problem mit OleDbDataReader

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit OleDbDataReader

    Hallo,

    ich habe vor ein paar tagen angefangen mich mit einem Access Datenbank auseinander zusetzen. Nach einigen Versuchen fand ich ein Code das funktionierte und hat auch gut geklappt. Jedoch seit ich heute Morgen wieder weiter schreiben wollte, gibt mir der OleDbDataReader nur noch den wert null zurück.

    Zwar trat dieses Problem auch, wenn die gesuchte Text nicht in der Datenbank war, doch ich versuche es extra mit etwas aus der Datenbank.

    Code:
    OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\***\\Desktop\\***.mdb");
    con.Open();
    for (int i =0; i < meineStrings.Length ; i++)
    				{
    string strSQL = "Select pos from Harf where lemma = " + meineStrings[i];
    OleDbCommand cmd = new OleDbCommand(strSQL, con);
    OleDbDataReader dr = cmd.ExecuteReader();
    					
    dr.Read();
    MessageBox.Show(dr[0].ToString());
    dr.Close();
    					
    }
    				
    con.Close();
    Ich hoffe dass mir jemand etwas weiter helfen kann und bedanke mich auch im vorraus

    Mit freundlichen Grüßen
    anemone

  • #2
    ...
    for (int i =0; i < meineStrings.Length ; i++)
    {
    string strSQL = "Select pos from Harf where lemma = " + meineStrings[i];
    ...
    Kannst du mir bitte erklären, was diese zwei Zeile bewirken? Warum wird da i hochgezählt? Und was glaubst du steht in meineStrings[i] schlußendlich drinnen?

    bye,
    Helmut

    Comment


    • #3
      Ich will später mehrere Wörter die beim Array drinne sind nacheinander abgleichen daher der for und i. Beim debug kommt natürlich der Array mit der gewünschten inhalt und auch bei strSQL ist es in ordnung.

      Mit freundlichen Grüßen
      anemone

      Comment


      • #4
        gibt mir der OleDbDataReader nur noch den wert null zurück.
        Willst du uns sagen das der Datareader nichts gefunden hat oder das er eine Zeile gefunden hat der Wert für pos aber null ist?

        Read() auf dem Datareader liefert die eine Boolean zurück ob es einen Treffer gab. Den solltest du definitiv auch prüfen. Oder besser noch da ich annehmen das du genau einen Wert zurück erwartest einfach direkt ExecuteScalar() am OleDbCommand aufrufen und den DataReader hier wegwerfen. Hilft wahrscheinlich jetzt nicht bei dem konkreten Problem sorgt aber für saubereren Code bei dem es dann leichter fallen sollte das Problem zu finden.

        und auch bei strSQL ist es in ordnung.
        Heißt wenn du das erstelle Sql in strSQL nimmst und in Access ausführst bekommst du ein Ergebnis aber aus deiner Anwendung nicht?

        Comment


        • #5
          wie es scheint lag das Problem beim fehlenden Anführungszeichen
          zu mindestens kann ich jetzt existierende Zeilen auslesen, doch beim nicht existierenden lande ich wieder beim Problem null

          Mit freundlichen Grüßen
          anemone

          Comment


          • #6
            Ich weiß zwar nicht, was du genau mit "Problem null" meinst, aber ich würde doch vor einer Ausgabe abfragen, ob überhaupt Daten da sind, also etwa so:
            Code:
            ...
            OleDbDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {					
                dr.Read();
                MessageBox.Show(dr[0].ToString());
            }
            else MessageBox.Show("keine Daten für lemma = >" + meineStrings[i] + "<");
            dr.Close();
            ...
            bye,
            Helmut

            Comment

            Working...
            X