C# Datenbank auslesen



  • Guten Tag,

    ich habe eine Frage in C#.

    Hier der Code:

    private void datenbankÖffnenToolStripMenuItem_Click(object sender, EventArgs e)
            {
                OleDbConnection con = new OleDbConnection(
                @"Provider=Microsoft.Jet.OLEDB.4.0;
                Data Source=C:\Users\Markus Schneider\Documents\Auto.mdb");
                con.Open();
    
                string strSQL = "SELECT * FROM Tabelle1";
    
                OleDbCommand cmd = new OleDbCommand(strSQL, con);
                OleDbDataReader dr = cmd.ExecuteReader();
    
                while (dr.Read())
                {
                    PKW a1 = new PKW();
                    a1.kennzeichen = dr[1].ToString();
                    a1.hersteller = dr[2].ToString();
                    a1.typ = dr[3].ToString();
                    comboBox1.Items.Add(a1);
                    /*a1.ausleihen = Convert.ToBoolean(dr["ausleihen"]);
                    if (dr["ausleihen"] == "0")
                    {
                        comboBox1.Items.Add(a1);
                    }
                    else
                    {
                        comboBox2.Items.Add(a1);
                    }*/
                }
                dr.Close();
                con.Close();
            }
    

    In der Datenbank ist ein Wert festgelegt. 0 = nicht ausgeliehen 1 = ausgeliehen
    Wenn in der Datenbank der Wert 0 gelesen wird, soll alles in comboBox1 reingeschrieben werden, wenn in der Datenbank der Wert 1 gelesen wird, soll alles in combobox2 geschrieben werden. Aktuell wird alles in comboBox1 geschrieben. Wie muss ich die If Anweisung ändern, damit das möglich ist?

    /*a1.ausleihen = Convert.ToBoolean(dr["ausleihen"]);
                    if (dr["ausleihen"] == "0")
                    {
                        comboBox1.Items.Add(a1);
                    }
                    else
                    {
                        comboBox2.Items.Add(a1);
                    }*/
    

    Außerdem würde ich gerne wissen, wie ich den Code abändern muss, damit man den Pfad per OpenFileDialog der Datenbankdatei selber aussuchen kann. Momentan ist ein fester Pfad festgelegt.

    OleDbConnection con = new OleDbConnection(
                @"Provider=Microsoft.Jet.OLEDB.4.0;
                Data Source=C:\Users\Markus Schneider\Documents\Auto.mdb");
                con.Open();
    
                string strSQL = "SELECT * FROM Tabelle1";
    

    Danke für eure Hilfe!

    Freundliche Grüße

    Markus



  • 1. a1.ausleihen wird wohl vom Typ bool sein. Das kannst du dann doch direkt in der if-Abfrage verwenden: if(a1.ausleihen)

    if(DialogResult.Ok == diag.ShowDialog())
    {
    OleDbConnection con = new OleDbConnection(
    string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;
                    Data Source={0}", diag.Filename));
    }
    

    (Im Forum getippt, ungetestet)



  • Zu Frage 2:

    Der sagt nun zu

    con.Open();
    

    Kein zulässiger Dateiname.
    OleDBExeption wurde nicht behandelt.

    Gesamter Code:

    DialogResult erg = openFileDialog2.ShowDialog();
                if (erg == DialogResult.OK)
                {
                    OleDbConnection con = new OleDbConnection(
                    string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;
                    Data Source={0}", openFileDialog2));
                    con.Open();
    

    Zu Frage 1:

    Die if Anweisung sieht nun wie folgt aus:

    a1.ausleihen = Convert.ToBoolean(dr["0"]);
    if (a1.ausleihen == "0")
                        {
                            comboBox1.Items.Add(a1);
                        }
                        else
                        {
                            comboBox2.Items.Add(a1);
                        }
    

    Fehler ist:
    Der Operator "==" kann nicht auf Operanden vom Typ "bool" und "string" angewendet werden.

    Schonmal danke!

    Gruß Markus



  • Ahja, dann schaust Du Dir meinen letzten Beitrag einfach nochmal ganz genau an. 🙄


Anmelden zum Antworten