tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Alexander Schuc
  • 1 Beitrag von jgraber
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
983
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    dumbaz28 dumbaz28 ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    31
    Hallo!

    Ich hab lange herumgespielt und habs geschafft, die Verbindung zur Datenbank (MySql in XAMPP) aufzubauen, einzutragen und auszulesen. Doch mein Problem: ich kann nur den ersten Eintrag auslesen.

    Das ist mein Code zum auslesen (so klappt der erste Eintrag):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
            public string auslesen(string tabelle, string spalte)
            {
                MySqlConnection connection = new MySqlConnection(myConnectionString);
                MySqlCommand command = connection.CreateCommand();
                command.CommandText = "SELECT " + spalte + " FROM " + tabelle;
     
                MySqlDataReader reader;
                connection.Open();
                reader = command.ExecuteReader();
                reader.Read();
                string wert = (Convert.ToString(reader.GetValue(0)));
                reader.Close();
     
                return wert;
            }

    also mit dem Index "0" klappts, aber sobald ich "i" oder "1" etc einsetzte, klappt nichts mehr

    ich habs auch schon so probiert:
    Code :
    1
    
    string wert = reader.GetString(i);

    mit dem Index "0" klappts auch so!

    Wahrscheinlich ists nur ein kleiner Fehler, aber ich komm nicht mehr drauf.

    Vielleicht habt ihr eine ganz andere Lösung mit der ich gleich in ein Array einschreiben kann? Ich sitz momentan total auf der Leitung, komm mir schon fast blöd vor.

    Danke (:
     

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hi.

    Der MySqlDataReader funktioniert so, dass du mit dem Aufruf von Read eine Zeile (einen Datensatz) einliest, und dann die Werte der Spalten abrufen kannst. Um zur nächsten Zeile zu kommen musst du nochmal Read aufrufen.

    Um alle Datensätze zu behandeln brauchst du also eine Schleife die typischer Weise so aussieht:

    Code csharp:
    1
    2
    3
    4
    5
    
    while (reader.Read())
    {
        string bla = reader.GetString(0);
        // etc.
    }

    Für weitere Infos wie du bequem Daten abfragen kannst, schau dir einfach mal ein paar ADO.net Tutorials an. Die Klassen des MySQL Connectors lassen sich gleich bedienen wie die entsprechenden Sql-Klassen die schon im .net framework enthalten sind.

    lg,..
    dumbaz28 bedankt sich. 
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  3. #3
    dumbaz28 dumbaz28 ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    31
    Vielen Dank, wie ich mir gedacht habe, völlig dummer Fehler

    Vielen Dank, werd ich am Abend gleich umsetzen
     

  4. #4
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Du kannst anstelle eines DataReaders auch mit einem MySqlDataAdapter und einer DataTable oder einem DataSet arbeiten. Ich finde das ist intuitiver, da DataTable eine Ergebnistabelle repräsentiert und DataSet eine Sammlung von Tabellen. Man kann danach schön über die Tabelle iterieren und auch direkt die Spaltennamen und Aliase benutzen. Hier siehst du den Aufbau: http://www.tutorials.de/forum/net-we...-practice.html (Ich suche noch nach Antworten ) und hier noch ein (triviales) Beispiel für Spaltennamen bzw. Aliase
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    string sql = "SELECT spalte, foo AS bar FROM tabelle";
    DataTable dataTable;
    //Ausführen und Ergebnis in dataTable...
    foreach(DataRow dataRow in dataTable.Rows)
    {
        //Zugriff auf die Ergenisse mit Aussagekräftigen Namen und nicht mit Indizes
        ....dataRow["spalte"]....
        //oder
        ....dataRow["bar"]....
    }

    Edit: Ich nehme das nochmal zurück. Ich kannte den MySqlDataReader bis eben gar nicht und habe mich gerade über die Unterschiede zum MySqlDataAdapter informiert.
    Geändert von CPoly (28.12.09 um 11:58 Uhr)
     

  5. #5
    dumbaz28 dumbaz28 ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    31
    Langsam verzweifel ich. Wahrscheinlich ists wieder nur ein kleiner Fehler, aber ich komm einfach nicht drauf.

    Ich hab eine Klasse "Datenbank.cs" mit der ich bisher alles abgewickelt habe (öffnen, schließen, eintragen etc). In dieser Klasse habe ich folgende Methode in verschiedenen Variationen probiert. Doch ständig kommt der Fehler "nicht alle Codepfade geben einen Wert zurück" und "unerreichbarer Code gefunden" (i++ in der for Schleife) ich habs auch schon ohne der For-Schleife versucht.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
            public string auslesen(string tabelle, string spalte)
            {
                MySqlConnection connection = new MySqlConnection(myConnectionString);
                MySqlCommand command = connection.CreateCommand();
                command.CommandText = "SELECT " + spalte + " FROM " + tabelle;
     
                MySqlDataReader reader;
                connection.Open();
                reader = command.ExecuteReader();
     
                while(reader.Read())
                {
     
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        string wert = reader.GetString(i);
                        //wert += reader.GetString(i);
                        return wert;
                    }
                }
     
                reader.Close();          
            }

    Vom array fang ich gar nicht erst an. Ich sitz echt auf der Leitung, dass konnte ich alles mal ansatzweise *peinlich*

    Danke nochmal
     

  6. #6
    jgraber jgraber ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    13
    Hallo dumbaz28,

    Das Problem liegt darin, dass du nur dann einen Rückgabewert lieferst, wenn die While-Schleife verarbeitet wird.

    Versuche es mal so (Achtung: Habe es nicht selber kompiliert):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
            public string auslesen(string tabelle, string spalte)
            {
                MySqlConnection connection = new MySqlConnection(myConnectionString);
                MySqlCommand command = connection.CreateCommand();
                command.CommandText = "SELECT " + spalte + " FROM " + tabelle;
     
                MySqlDataReader reader;
                connection.Open();
                reader = command.ExecuteReader();
     
                // hier wert definieren
                string wert = "";
     
                while(reader.Read())
                {
     
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        wert += reader.GetString(i);
                    }
                }
     
                reader.Close();    
     
                // erst hier das Return
                return wert;
            }
    dumbaz28 bedankt sich. 

  7. #7
    dumbaz28 dumbaz28 ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    31
    so hab ichs probiert (sagen wir mal so ähnlich, weil jetzt liest es zumindest alles aus, und davor eben nicht)

    nur mehr in einen Array packen und es sollte endlich klappen.

    vielen vielen dank. hab mir ja gedacht es wird mal wieder nur eine Kleinigkeit sein, die ich genau SO nicht probiert habe
     

Ähnliche Themen

  1. In C MySQL Datenbank auslesen
    Von Limitsunknown im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 04.11.07, 19:11
  2. Keys aus mysql datenbank auslesen
    Von anfeanger83 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.04.06, 11:05
  3. MYSQL Datenbank zeilenweise auslesen
    Von onezero im Forum PHP
    Antworten: 2
    Letzter Beitrag: 22.02.05, 21:32
  4. Auslesen aus MySql datenbank
    Von Nickel im Forum PHP
    Antworten: 2
    Letzter Beitrag: 19.02.02, 18:18
  5. mysql-Datenbank aktuell auslesen
    Von mgb im Forum PHP
    Antworten: 0
    Letzter Beitrag: 13.09.01, 15:49