Fehler beim beim Auslesen der DB

Slater

Erfahrenes Mitglied
Ha zusammen, ich habe schon wieder ein Problem mit der DB.
Ich möchte die Anhand von min und max gefundenen DB einträge mit einer while Schleife auslesen (YHacken wird dann in einem Diagramm weiterverwendet..)
Jedoch gibt es immer wenn ich die einzelnen Zeilen im Debugger abarbeite einen Fehler (Er bricht vor der while()-Schleife ab :( )
Was ist da falsch?

Gruess Slater

Code:
int min = tAktuell-Zeitfensterms;
int max = tAktuell;
if (min <= 0)
{
min = 1;
}
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Datenbank.mdb"); 
string str = "SELECT * FROM Kran WHERE ID<='" + max + "' AND ID>='" + min + "' ORDER BY ID DESC";
OleDbCommand cmd = new OleDbCommand(str, con);
con.Open();
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
YHacken = Convert.ToInt32(dr["YHacken"].ToString());
// auf die Picture Box zeichnen...
}
con.Close();
 
Im Anhang habe ich mal ein Printscreen des Fehlers. Hoffe es kann mir jemand helfen :(
 

Anhänge

  • Fehler.JPG
    Fehler.JPG
    43,2 KB · Aufrufe: 37
Hallo.

Da in der Fehlermeldung etwas von unbehandelter Ausnahme steht, solltest du es mal mit einem try/catch/finally-Konstrukt versuchen, mit einem Breakpoint im Catch-Block. Also ungefähr so:
Code:
...
OleDbConnection con = null;
try
{
    int min = tAktuell-Zeitfensterms;
    int max = tAktuell;
    if (min <= 0)
    {
    min = 1;
    }
    con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data   Source=Datenbank.mdb"); 
    string str = "SELECT * FROM Kran WHERE ID<='" + max + "' AND ID>='" + min + "'     ORDER BY ID DESC";
    OleDbCommand cmd = new OleDbCommand(str, con);
    con.Open();
    OleDbDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    YHacken = Convert.ToInt32(dr["YHacken"].ToString());
    // auf die Picture Box zeichnen...
    }    
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message); //Hier den Breakpoint setzen
}
finally
{
    if(con!=null)
    {
        con.Close();
    }
}
...
In der Zeile mit dem roten Kommentar solltest du beim debuggen den Breakpoint setzen, die grünen Zeilen habe ich in der Position verändert. Was genau ist eigentlich deine Bedingung in der while-Schleife? Da kann meines Wissens nach nur ein Boolscher Wert stehen, also true oder false; und DataReader.Read() gibt doch keinen Boolschen Wert zurück, oder? (Von wegen "unverträgliche Datentypen" in der Fehlermeldung :D)
Versuch besser mal
Code:
while(!(dr.IsClosed))
wenn du die Schleife solange durchlaufen möchtest, wie der Reader liest.
Lass aber dennoch bitte mal den Debugger laufen und poste hier die Konsolen-Ausgabe. Dann kann ich dir eventuell sagen, was sonst noch falsch ist. ;)

Gruß, Niko
 
Zuletzt bearbeitet:
Hi.

Das mit unbehandelter Ausnahme ist erstmal egal, schön ist es zwar nicht, aber es ist ja nicht der eigentliche Fehler. Nur weil es unbehandelt ist, muss dir die CLI davon berichten. (Obwohl dein Programm es selbst merken sollte.)

Der eigentliche Fehler ist, so wie man ein wenig im Fenster lesen kann:
"Datentypen in Kriterienaudruck unverträglich.."

Das bedeutet, dein SQL Ausdruck ist falsch. =)

Code:
string str = "SELECT * FROM Kran WHERE ID<='" + max + "' AND ID>='" + min + "' ORDER BY ID DESC";

Ich schätze das ID eine Zahl ist. Zahlen müssen nicht in Anführungszeichen stehen.

Code:
string str = "SELECT * FROM Kran WHERE ID<=" + max + " AND ID>=" + min + " ORDER BY ID DESC";

MfG,
Alex
 

Neue Beiträge

Zurück