Laden...

MYSQL mehre Einträge auslesen

Erstellt von Bennibaer87 vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.621 Views
B
Bennibaer87 Themenstarter:in
28 Beiträge seit 2011
vor 12 Jahren
MYSQL mehre Einträge auslesen

Hallo ich benutze MYSQL und programmiere C#.
Ich hab jetzt schon hier im Forum gesuchen und probier aber mein Problem geht nicht weg.
Ich möchten Daten aus einer Datenbank abfragen aber es wird immer nur der erste Eintrag den er findet angezeigt obwohl es mehr geben müsste.
Mein Code lautet bis jetzt:

MySqlCommand command4 = connection.CreateCommand();
            command4.CommandText = "SELECT * FROM eigenschaften WHERE M_ID ='" + modellid + "' LIMIT 0, 30";
            connection.Open();
            string tiefe; ;
            tiefe = Convert.ToString(command4.ExecuteScalar());
            label11.Text = tiefe;

            Reader2.Close();
            Reader2 = command4.ExecuteReader();
            
         
            while (Reader2.Read())
             { 
                 
             
                
                        richTextBox1.Text = Reader2.GetString("E_ID") + ("  ") + Reader2.GetString("M_ID") + ("  ") + Reader2.GetString("Ausstattungsvariant") +
                    ("   ") + Reader2.GetString("PS") + ("  ") +
                    Reader2.GetInt16("sitzplaetze") + ("   ") +
                    Reader2.GetInt16("tueren") + ("   ") +
                    Reader2.GetInt16("Baujahr") +
                    ("  ") + Reader2.GetInt16("Preis");

Ich hoff es kann mir jemand helfen. Bin schon am verzweifeln.
Danke schon mal!

I
35 Beiträge seit 2011
vor 12 Jahren

Hallo,

wie es aussieht schließt du den Reader, bevor du zu lesen beginnst ...

        Reader2.Close(); 

while (Reader2.Read())
{
......
}

probiere, das "Reader2.Close();" nach deinem Read, also nach der while Schleife zu platzieren.

LG,
Ron

programmers do confuse halloween with christmas, because OCT 31 == DEC 25.

B
Bennibaer87 Themenstarter:in
28 Beiträge seit 2011
vor 12 Jahren

Hab ich gemacht. Hab aber das gleiche problem. Er gibt mir immer nur den ersten Eintrag aus leider:

MySqlCommand command4 = connection.CreateCommand();
            command4.CommandText = "SELECT * FROM eigenschaften WHERE M_ID ='" + modellid + "' LIMIT 0, 30";
            connection.Open();
            int tiefe; ;
            tiefe = Convert.ToInt16(command4.ExecuteScalar());

            int tiefe2 = 0;

            Reader2 = command4.ExecuteReader();
            Reader2.Read();

            while (Reader2.Read())
            {





                richTextBox1.Text = Reader2.GetString("E_ID") + ("  ") + Reader2.GetString("M_ID") + ("  ") + Reader2.GetString("Ausstattungsvariant") +
                ("   ") + Reader2.GetString("PS") + ("  ") +
                Reader2.GetInt16("sitzplaetze") + ("   ") +
                Reader2.GetInt16("tueren") + ("   ") +
                Reader2.GetInt16("Baujahr") +
                ("  ") + Reader2.GetInt16("Preis");
                
                tiefe2++;
                Reader2.NextResult();
                
            }

            Reader2.Close();
S
24 Beiträge seit 2011
vor 12 Jahren

Immer diese wilden "Stringkaskaden" ...
Schau dir doch mal Parameter an


MySqlCommand command4 = connection.CreateCommand();
command4.CommandText = "SELECT * FROM eigenschaften WHERE M_ID = @modellid LIMIT 0, 30"; //* bitte durch Tupelliste ersetzen
command4.Parameters.Add("@modellid", modellid);
            
connection.Open();
           
label11.Text = Convert.ToString(command4.ExecuteScalar());

MySqlReader Reader2 = command4.ExecuteReader();

while (Reader2.Read())
{
   //wilder Konstrukt, aber bitte nicht nur den letzen Datensatz in die RichTextBox packen ... (btw Reader2.NextResult(); ... unnötig)
}
Reader2.Close();
I
35 Beiträge seit 2011
vor 12 Jahren
while (Reader2.Read())  
{  
richTextBox1.Text = Reader2.GetString("E_ID") + ("  ") + Reader2.GetString("M_ID") + ("  ") + Reader2.GetString("Ausstattungsvariant") + ("   ") +  
Reader2.GetString("PS") + ("  ") +  
Reader2.GetInt16("sitzplaetze") + ("   ") +  
Reader2.GetInt16("tueren") + ("   ") +  
Reader2.GetInt16("Baujahr") + ("  ") + Reader2.GetInt16("Preis");  
tiefe2++;  
Reader2.NextResult();  
}  
  
Reader2.Close();  

Alles klar, wie du das machst, hab ichs noch nie gemacht, aber stells dir mal die Tabelle so vor (ist jetzt ein Beispiel):

[0] [NAME]
[1] [ADRESSE]
[2] [STRAßE]

... wenn du jetzt 5 Einträge hast sieht das so aus:

while (Read.Read())
{
textBox1.Text = Reader.GetString(0) => Name
textBox2.Text = Reader.GetString(1) => Adresse
textBox3.Text = Reader.GetString(2) => Straße
}

ich bin mir nicht sicher, ob deine Variante funktioniert,
also probier's mal so!

Er gibt dir dann quasi von allen fünf Einträge Name, Adresse, Straße zurück ... (immer Stelle 0, 1, 2)

LG,
Ron

programmers do confuse halloween with christmas, because OCT 31 == DEC 25.

F
10.010 Beiträge seit 2004
vor 12 Jahren

@Bennibaer87:
[Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen
[Artikelserie] SQL: Parameter von Befehlen

Und wenn du in deiner Schleife auch den text jedesmal überschreibst, kann da am ende auch nur ein Datensatz drin stehen.