Autor Beitrag
fab_se
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 02.12.10 17:47 
Hallo Leute!

Ich habe folgendes Problem und hoffe ihr könnt mir helfen:
Ich will aus einer MySQL Datenbank die Anzahl der vorhandenen Datensätze in einer Tabelle auslesen und in einer Interger Variable speichern. Dazu habe ich bis jetzt folgenden Code geschrieben:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
string strVerbindung =  "SERVER=localhost;" +
                        "DATABASE=kontoverwaltung;" +
                        "UID=root;";

            MySqlConnection verbindung = new MySqlConnection(strVerbindung);
            verbindung.Open();

            MySqlCommand zaehlen = verbindung.CreateCommand();
            zaehlen.CommandText = "SELECT ID, COUNT(ID) from kunde";
            MySqlDataReader reader;
            zaehlen.ExecuteReader();


Ich habe schon versucht einer Integer Variable wie folgt einen Wert zuzuweisen:

ausblenden C#-Quelltext
1:
int intAnzahl = reader.FieldCount();					


In verschiedenen Code Beispielen habe ich gesehen, dass man die Tabelle auch Zeile für Zeile bzw. Feld für Feld durchgehen kann und dabei einen Zähler mit hochlaufen lassen kann, allerdings finde ich dieses Vorgehen umständlich und könnte mir vorstellen, dass sich dieses Problem auch einfacher lösen lässt. Hat jemand eine Idee?

Gruß Fabi

Moderiert von user profile iconKha: Quote- durch C#-Tags ersetzt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 02.12.10 17:53 
Mit "FieldCount()" erhältst du die Anzahl der Spalten, nicht der Zeilen.

Bei einem DataReader geht es nur mittels einer Schleife, um an die Anzahl zu kommen.

Einfacher ist es jedoch direkt die Datenbank zu fragen:
ausblenden Quelltext
1:
select count(*) from Kunde					

und danach dann im Code
ausblenden C#-Quelltext
1:
int anzahl = (int)sqlCommand.ExecuteScalar();					

Der Cast auf (int) ist notwendig, weil ExecuteScalar ein 'object' zurückliefert (wir wissen aber, daß bei count(*) eine Zahl zurückgeliefert wird ;-).
fab_se Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 02.12.10 23:38 
Erstmal Danke für deine Antwort.

Ich verstehe jedoch nicht was du damit meinst die Datenbank direkt zu fragen bzw. wie ich den SQL Befehl sonst einbauen soll. Denn in Zeile 9 steht ja schon drin:

ausblenden C#-Quelltext
1:
zaehlen.CommandText = "SELECT ID, COUNT(ID) from kunde";					


Und was macht der Befehl Execute.Scalar() ?
Ich finde leider keine gute Dokumentation zum Thema MySQL und C#. Die meisten beschränken sich nämlich (leider) auf das aufbauen einer Verbindung und das Schreiben in die Datenbank, nicht jedoch das Auslesen. Kann mir da eventuell jemand was empfehlen?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 03.12.10 14:35 
Hallo,

einen guten Einstieg in die Datenbankprogrammierung kriegst du mit dem OpenBook openbook.galileocomp...acea5f18efd504026822
(du mußt dann bei dir nur alle SqlCommand etc. mit MySqlCommand ersetzen).

Ein weiteres Tutorial (diesmal explizit für MySql) gibt es unter www.codeplanet.eu/tu...rver-mit-csharp.html
(auch der DataReader wird dort am Beispiel erklärt).

Oder direkt auf der MySql-Seite: dev.mysql.com/doc/re...tutorials-connection