c# und mysql

Cäptin Pommes

Erfahrenes Mitglied
hi,

ich muss demnächst ein mysql Datenbank zugriff in c# schreiben und wollte mich schonmal informieren

hat jemand nen link zu nem guten tut oder ähnliches?
 

CPoly

Mitglied Weizenbier
Ich kann dir das in ein paar Zeilen beschreiben.

Lade dir den MySQL Connector für .net herunter: http://dev.mysql.com/downloads/connector/net

Binde in deiner Klasse den Namensraum ein

C#:
using MySql.Data.MySqlClient;


Und für die meisten Problem reicht folgender Code.

C#:
using (MySqlDataReader reader = MySqlHelper.ExecuteReader(
	"DEIN CONNECTION STRING",
	"SELECT * FROM tabelle WHERE foo=?bar;",
	new MySqlParameter("?bar", 1337)/*, evtl. weitere MySqlParameter */)
	{
		if(!reader.hasRows)
		{
			//Es wurden keine Daten gefunden

			return;
		}

		while(reader.Read())
		{
			reader.getInt(0);

			reader.getString(1);

			//etc.
		}

		//Falls du mehr als eine Abfrage gemacht hast (z.B. mehrere SELECT durch Semikolon getrennt)

		reader.NextResult();

		//while(reader.Read())
		//usw.
	}

Ich kam bisher ausnahmslos mit den Methoden unter "MySqlHelper" aus. Wenn du willst, kannst du auch MySqlConnection etc. selbst erstellen, finde ich unnötig.
 

CPoly

Mitglied Weizenbier
hmmm mal ne frage zu dem .net conector ... is der auch für kommerzielle projekte nutzbar?

Das kommt darauf an, ob du ihn mit auslieferst (Desktop Anwendung), oder nicht (Webanwendung). Falls du eine Desktop Anwendung schreiben willst, dann würdest du wohl auch MySQL mitliefern wollen, aber das geht definitiv nicht ohne kommerzielle Lizenz. Ich würde mich aber aus dem Fenster lehnen und behaupten, dass wenn du für MySQL die Lizenzgebühren bezahlst, dass du dann auch den Connector benutzen darfst, sonst wäre die Datenbank alleine ziemlich nutzlos.
 

Cäptin Pommes

Erfahrenes Mitglied
Ich habe ein Problem mit dem Connector das ich nicht verstehe, ich versuche etwas in die Datenbank zu packen und zwar mit diesem command:

Code:
String.Format("INSERT INTO user (user_name, password, rights) Values({0}, {1}, {2})", userBox.Text, cryptedPsw, rights)

das interessante ist jetzt, das es wunderbar funktioniert wenn alles Zahlen sind! Sobald ein Buchstabe drin vorkommt sagt er mir

Unknown column "(der erste wert wo ein Buchstabe drin vorkam)" in field list

An was kann das liegen?
 

CPoly

Mitglied Weizenbier
An was kann das liegen?

Text gehört in Anführungsstriche.

Aber ich habe extra den Code mit Parametern gepostet. Benutze bloß nicht String.format.

C#:
MySqlHelper.ExecuteNonQuery(
    "DEIN CONNECTION STRING",
    "INSERT INTO user (user_name, password, rights) Values(?name, ?pwd, ?rights)",
    new MySqlParameter("?name", userBox.Text),
    new MySqlParameter("?pwd", cryptedPsw),
    new MySqlParameter("?rights", rights));