2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
983
983
EMPFEHLEN
-
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 (:
-
28.12.09 00:09 #2
- 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,..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
-
Vielen Dank, wie ich mir gedacht habe, völlig dummer Fehler

Vielen Dank, werd ich am Abend gleich umsetzen
-
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)
-
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
-
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; }
-
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
-
In C MySQL Datenbank auslesen
Von Limitsunknown im Forum C/C++Antworten: 1Letzter Beitrag: 04.11.07, 19:11 -
Keys aus mysql datenbank auslesen
Von anfeanger83 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 19.04.06, 11:05 -
MYSQL Datenbank zeilenweise auslesen
Von onezero im Forum PHPAntworten: 2Letzter Beitrag: 22.02.05, 21:32 -
Auslesen aus MySql datenbank
Von Nickel im Forum PHPAntworten: 2Letzter Beitrag: 19.02.02, 18:18 -
mysql-Datenbank aktuell auslesen
Von mgb im Forum PHPAntworten: 0Letzter Beitrag: 13.09.01, 15:49





Zitieren


Login





