Laden...

MySQL Datenbank verwenden

Erstellt von Blue_Dragon vor 18 Jahren Letzter Beitrag vor 18 Jahren 7.899 Views
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren
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

2.082 Beiträge seit 2005
vor 18 Jahren

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

257 Beiträge seit 2004
vor 18 Jahren

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.

2.082 Beiträge seit 2005
vor 18 Jahren

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

257 Beiträge seit 2004
vor 18 Jahren

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

F
529 Beiträge seit 2003
vor 18 Jahren

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

Besuchen sie das VisualC++ - Forum

F
10.010 Beiträge seit 2004
vor 18 Jahren

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

D
155 Beiträge seit 2005
vor 18 Jahren

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

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

J
187 Beiträge seit 2005
vor 18 Jahren

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

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

D
155 Beiträge seit 2005
vor 18 Jahren

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.

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

D
155 Beiträge seit 2005
vor 18 Jahren
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

2.082 Beiträge seit 2005
vor 18 Jahren

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

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

Und wie geb ich das dann aus?

2.082 Beiträge seit 2005
vor 18 Jahren

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

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

D
155 Beiträge seit 2005
vor 18 Jahren

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.

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

D
155 Beiträge seit 2005
vor 18 Jahren

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

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

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

D
155 Beiträge seit 2005
vor 18 Jahren

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

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

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

F
10.010 Beiträge seit 2004
vor 18 Jahren

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.

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

Wo find ich diese Grundlagen?

F
10.010 Beiträge seit 2004
vor 18 Jahren

In Büchern!

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

Y
25 Beiträge seit 2005
vor 18 Jahren

@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.