Laden...

Warum liest der IDataReader nur jeden zweiten Eintrag?

Letzter Beitrag vor 4 Jahren 5 Posts 904 Views
Warum liest der IDataReader nur jeden zweiten Eintrag?

verwendetes Datenbanksystem: Mysql/MariaDB

ich habe in einer DB viele Einträge, mit folgendem Code versuche ich diese auszulesen, was auch sehr gut klappt, bis auf die Tatsache, dass er einfach Einträge vergisst


            MySqlConnection mySqlConnection = new MySqlConnection(Connectionstring);

                mySqlConnection.Open();
MySqlCommand command = mySqlConnection.CreateCommand();
            command.CommandText = "SELECT * FROM a_roomByKats";

            IDataReader reader = command.ExecuteReader();
                
            while (reader.Read())
            {
                    
                    if (reader.Read())
                {
                        string roomID = reader[0].ToString();
                        string roomKatID = reader[1].ToString();
                        string roomName = reader[2].ToString();
                        string roomDescription = reader[3].ToString();
                        
                        listBox2.Items.Add(roomID.ToString());
                        Console.WriteLine(roomID.ToString() + " - " + roomKatID.ToString() + " - " + roomName.ToString() + " - " + roomDescription.ToString());
                     
                }
            }

            reader.Close();
            command.Dispose();
            mySqlConnection.Close();

fehlt
2 - 2 - Kassel - Kassel Cannel
fehlt
4 - 2 - Bayern - Bayern
fehlt
6 - 2 - Brandenburg - Brandenburg
fehlt
8 - 2 - Hamburg - Hamburg
fehlt
10 - 2 - Mecklenburg-Vorpommern - Mecklenburg-Vorpommern
fehlt
fehlt
13 - 2 - Saarland - Saarland
fehlt
15 - 2 - Sachsen-Anhalt - Sachsen-Anhalt
fehlt
fehlt
17 - 2 - Thüringen - Thüringen

er ließt nur jeden 2 oder 3ten Eintrag aus, woran könnte es liegen?

Weil du zwei mal reader.Read() aufrufst, bevor du etwas mit den Daten machst.

Weil du zwei mal reader.Read() aufrufst, bevor du etwas mit den Daten machst.

ohjee, manchmal sieht man den wald vor lauter bäumen nicht, vielen dank 😃

 command.CommandText = "SELECT * FROM a_roomByKats";

Absolutes NoGo - auch nicht zum Testen. Niemals Daten per * abrufen...

Damit die Aussage von Stefan auch begründet ist:
Why is SELECT * considered harmful?