Laden...

MySQL Datenbank verwenden

Letzter Beitrag vor 18 Jahren 29 Posts 7.985 Views
MySQL Datenbank verwenden

Hi Leute!

Also, ich hab ein Problem.... Ich möchte in C# eine Datenbankverbindung öffnen. Aber ich bin absoluter Neuling wenn es darum geht in C# zu einer Datenbank zu connecten die ich mit phpMyAdmin erstellt habe....

Gibts da eine einfache möglichkeit und kann ich den Namespace "using System.Data;" verwenden?

Ich hab das Forum durchsucht, aber ich hab es über die Beiträge die ich gelsen hab nicht verstanden...

Ich hoff ihr seit nicht böse das ich ein neues Thema erstellt habe, aber ich hab es einfach nicht verstanden...

Ich bräuchte die Befehle um eine Verbindung aufzunehmen, SQL Befehle einzugeben und das ganze auch irgendwann wieder zu beenden.

Ich hoffe auf eure Hilfe

Lg
Dragon

Google doch mal.
Benutz am besten using System.Data.SqlClient; dürfte alles bereitstellen, was du brauchst. Natürlich benötigst du noch eine SQLConnection und ein SQLCommand

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

Er möchte doch eine MySQL-Server ansprechen, da wird SqlCommand aus dem Namespace System.Data.SqlClient nicht so gut funktionieren, da dies eine Komponente für den MSSQL-Server ist.

Es gibt verschiedene Komponenten im Netz die du dafür verwenden kannst. Google mal danach.

Achso wusste nicht, dass das nur auf dem MSSql Server funzt. Tja wir haben halt nur den und da hats bisher immer damit funktioniert. Aber denk mal dass es für den MySql Server auch namespaces gibt.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

Klar gibt es da Namespaces, die sind aber nicht im .NET Framework enthalten, dafür muss man schon spezielle Assemblies einbinden.

Der hier http://dev.mysql.com/downloads/connector/net/1.0.html ist eigentlich recht gut....

Besuchen sie das VisualC++ - Forum

Und im MySql Handbuch ab seite 24.2 steht wie der zu bedienen ist.

Generell gilt:
(Fast) Jedes Datenbank System hat seinen eigenen .NET Connector, den man auch am besten nutzen sollten.

Wäre es dann für den Einstieg leicher wenn ich einfach mit MS Access Datenbanken arbeite und dort eine Verbindung aufnehme?

Hallo Blue_Dragon,

was heißt leichter...

Im Prinzip ist es egal, da du "nur" einen anderen Connector benötigst, wie meine Vorredner schon ansprachen.
Für Access benötigst du OleDb (bevorzuge ich).

Die Frage ist auch, wozu brauchst du eine Datenbankanbindung? Brauchst du dafür einen Server, oder reicht die lokale Access-Datei?
Insofern ist es meiner Meinung nach egal, worauf du am Anfang zugreifst.

Ich bastel derzeit auch mit MySql und dem .Net Connector (Link weiter unten) wenn du dazu Hilfe oder Beispiele die im übrigen auch sehr gut in der Doku stehen benötigst, kannst du dich auch an mich wenden.

MfG
Jens

Hm, ich will mich nur mal mit Datenbankzugriffen und Informationen auslesen beschäftigen....

Und dazu will ich mir keinen Connector runterladen, daher mach ich das in Access....

Hm, und wie is da die Theorie dahinter und welche Klassen und Befehle brauche ich da?

lg
Dragon

Klar kannst du erstmal den OleDB Namespace im System.Data Namespace nehmen aber was ist da schon großes dabei den MySQL Connector zu laden und einzubinden?

Übrigens, aber am leichtesten finde ich Firebird, denn die haben eine Connectionstringbuilder Klasse die ich sehr bevorzuge.

Und wie sieht ein Connection String aus?

Ich hab das jetzt mal so:

private void button1_Click(object sender, System.EventArgs e)
{
OleDbConnection con = new OleDbConnection();
}

aber ich werd ihm doch als Prameter mitgeben, welche Datenbank und so...

Wie muss ich das den Aufbauen, also Syntaxmäßig und wie mach ich dann einen Querry?

Wie gesagt, ich bin anfänger in C# in Verbindung mit Datenbanken

Hallo!

Danke der CS sollte jetzt stimmen, aber ich hab jetzt immer noch keine Ahnung wie der Befehl für einen Querry geht....

Geht das so?

private void button1_Click(object sender, System.EventArgs e)
{
OleDbConnection con = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Datenbanken.mdb;User Id=admin;Password=;");
con.Open();
con.CreateCommand() = //irgendwas;
}

also wenn ich statt //irgendwas ein SELECT * FROM *; hinschreibe, bekomm ich dann alle Datensätze der Tabelle geliefert oder wie macht man das?`

lg
Dragon

Du kannst keine Wildcard für die Tabellen benutzen. Also Select * From * geht nicht, da ist der zweite * falsch. Du kannst natürlich Select * From MeineTabelle benutzen dafür gibt es auch Handbücher.

Zu dem Command.
Ich würde das Command anders erstellen, z. B. so:

OleDbCommand myComm = new OleDbCommand("DAS GESAMTE COMMAND", con);
myComm.ExecuteNonQuery();

so funktioniert das zumindest auf SQL.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

Und wie geb ich das dann aus?

Um dann z. B. eine Tabelle auslesen zu lassen benutze ich normalerweise ein DataSet und einen DataAdapter.

OleDbDataAdapter myAdapter = new OleDbDataAdapter(myComm);
DataSet myDataSet = new DataSet();
//Connection öffnen
//Select senden
myAdapter.Fill(DataSet);
//Connection schließen

Dann hast du alles im DataSet. Je nachdem welches Command du benutzt.

Du solltest aber besser nicht alles nachfragen sonder im Netz suchen z. B. gibts da sachen auf CodeProject da lernst dus dann besser als nur den QC zu übernehmen.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

Hallo!

Ich hab jetzt meinen Quelltext so stehen....

private void button1_Click(object sender, System.EventArgs e)
{
OleDbConnection con = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=Datenbanken.mdb;User Id=admin;Password=;");
OleDbCommand myComm = new OleDbCommand("SELECT * FROM Test", con);
OleDbDataAdapter myAdapter = new OleDbDataAdapter(myComm);
DataSet myDataSet = new DataSet();
con.Open();
myComm.ExecuteNonQuery();
myAdapter.Fill(myDataSet);
con.Close();
}

Eine nicht behandelte Ausnahme des Typs 'System.Data.OleDb.OleDbException' ist in system.data.dll aufgetreten.

Hm, ich weiß nicht was ich jetzt damit anfange .......

Kann mir einer von euch sagen was nicht stimmt ?

lg
Dragon

Wenn du einen DataAdapter nimmst solltest du nicht die Connection öffnen.
Das ist nämlich das ADO Prinzip: Es wird nur connected wenn Daten geändert oder abgerufen werden.

Also Connection nicht öffnen oder closen. Das macht schon der DataAdapter.

ich hab jetzt die con.Open() und die con.Close() wegenommen, aber ich hab immer noch den selben Fehler....

mycomm.executenonquery muss weg und gib mal den kompletten pfad an (und nicht Datenbanken.mdb)

Hm, die Datenbank ist im selben Ordner wie die Solution....

und was muss ich außer myComm.ExecuteNonQuery() schreibern?

nichts!?
Weil DataAdapter1.Fill(DataTable1) führt bereits den zugewiesenen Select Command aus.

private void Form1_Load(object sender, System.EventArgs e)
{

OleDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Dokumente und Einstellungen\Matthias\Eigene Dateien\Schule\Angewandte Datentechnik\tigerscott.mdb;User Id=admin;Password=;");

MyConnection.Open();

OleDbCommand myComm = new System.Data.OleDb.OleDbCommand("SELECT * FROM EMP;", MyConnection);

this.Text = myComm.ExecuteNonQuery().ToString();

MyConnection.Close();
}

So sieht er jetzt aus und ich will nur mal testen ob das mit der Verbindung so passt, aber der Text des Formulars ändert sich auf 0 obwohl Datensätze in der DB enthalten sind ..... ich versteh einfach nicht warum das nicht richtig funktioniert

lg
Dragon

Wie wäre es, wenn Du mal die angebotenen Grundlagen liest?

Dann könntest Du verstehen was Du tun musst, und nicht so im
Dunkeln rumstochern.

Wo find ich diese Grundlagen?

In Büchern!

Wie wäre es mit suchen?
Die werden in diesem Forum ständig genannt.

@Blue Dragon
Du musst zuerst einmal die Grundlagen von c# verstehen bzw. erarbeiten bevor du dich an die komplizierteren Dinge heranwagst.
Wenn Du nach "csharp", "beginner" und "tutorial" und dem thema das Dich interessiert suchst dann wirst du viel nützliches finden. Probier die einfachen Beispiele aus und versuche zu verstehen warum die Dinge so funktionieren (nicht einfach nur abschreiben).

Auf www.codeproject.com sind auch viele Artikel mit "beginner" markiert. Die sind nicht so komplex und geben Dir einen guten Einstieg.

Wir haben uns alle diese Grundlagen beibringen müssen. Das Forum ist dann dafür gedacht bei einem Problem zu helfen und nicht jeden Schritt vorzukauen. Als Programmierer ist es wichtig sich selbst ein Problem erarbeiten zu können, darum mit ganz einfachen Dingen anfangen.

Lg yakuza

NUnit is your friend.