C# und MySQL Zugriff über MySQLDriverCS

der jaf

Grünschnabel
Hallo,

als kompletter .NET-Newbie verwende ich MySQLDriverCS, um in C# einen Web Service mit MySQL-Zugriff umzusetzen.

Folgende Methode läuft einwandfrei:

Code:
 [WebMethod]
 	public string[] getEventIDs(string date) {
 		string[] eventIDs = null;
 		int l=0;
 
 		try {
 			MySQLConnection con;
 			con = new MySQLConnection(new MySQLConnectionString("localhost",
 															    "db",
 															    "user",
 															    "pass").AsString);
 			con.Open();
 
 		    string sql = "SELECT eventID FROM event_title WHERE datum_von='" + date + "'";
 
 			MySQLCommand cmd = new MySQLCommand(sql,con);
 			MySQLDataReader reader = cmd.ExecuteReaderEx();
 
 			while(reader.Read()) {
 				l++;
 			}
 
 			reader = cmd.ExecuteReaderEx();
 
 			eventIDs = new string[l];
 			int i = 0;
 			while(reader.Read()) {
 				eventIDs[i] = reader[0].ToString();
 				i++;
 			}
 			reader.Close();
 			con.Close();
 		} catch(Exception ee) {
 			Console.WriteLine(ee.ToString());
 		}
 		return eventIDs;
 	}

Zwischenfrage: wie kann ich die Länge von MySQLDataReader reader ermitteln, damit ich nicht, wie oben im Code zweimal

Code:
 while(reader.Read()) { ... }

ausführen muss (beim ersten mal nur, um die Länge zu bestimmen....


So und jetzt das eigentliche Problem:
Während die obere Methode mir aus einer Tabelle verschiedene eventIDs aus unterschiedlichen Zeilen in der Tabelle liefert...möchte ich in der nächsten methode anhand einer bestimmten eventID die komplette Zeile aus der MySQL-DB zu diesem Eintrag - also Select *....wenn ich das SQL-Statement in MySQL direkt verwende bekomm ich auch das richtige Resultat, aber innerhalb der Methode bekomme ich komischerweise nur die eventID wieder zurück, die ich als Parameter für den Methodenaufruf mitgegeben habe
Hier der Code der Methode:

Code:
 [WebMethod]
 	public string[] getEventDetails(string eventID) {
 		string[] eventDetails = null;
 		int l=0;
 
 		try {
 			MySQLConnection con;
 			con = new MySQLConnection(new MySQLConnectionString("localhost",
 															    "db",
 															    "user",
 															    "pass").AsString);
 			con.Open();
 
 		    string sql = "SELECT * FROM event_title WHERE eventID = '" + eventID + "'";
 
 			MySQLCommand cmd = new MySQLCommand(sql,con);
 			MySQLDataReader reader = cmd.ExecuteReaderEx();
 
 			while(reader.Read()) {
 				l++;
 			}
 
 			reader = cmd.ExecuteReaderEx();
 
 			eventDetails = new string[l];
 			int i = 0;
 			while(reader.Read()) {
 			    eventDetails[i] = reader[0].ToString();
 				i++;
 			}
 			reader.Close();
 			con.Close();
 		} catch(Exception ee) {
 			Console.WriteLine(ee.ToString());
 		}
 
 		return eventDetails;
 	}

Zwischenfrage: wie kann ich die Datenbankverbindung als "Singleton" auslagern...bzw wie in Java als statische Methode definieren...damit ich sie nicht in jeder Methode von neuem schreiben muß?


Danke für eure Hilfe :)

Gruß
jaf
 
Zurück