Laden...

Warum liest der IDataReader nur jeden zweiten Eintrag?

Erstellt von TheGateway vor 3 Jahren Letzter Beitrag vor 3 Jahren 824 Views
T
TheGateway Themenstarter:in
12 Beiträge seit 2020
vor 3 Jahren
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?

D
261 Beiträge seit 2015
vor 3 Jahren

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

T
TheGateway Themenstarter:in
12 Beiträge seit 2020
vor 3 Jahren

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 😃

463 Beiträge seit 2009
vor 3 Jahren
 command.CommandText = "SELECT * FROM a_roomByKats";

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

16.807 Beiträge seit 2008
vor 3 Jahren

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