Laden...

Verbindung mit MySQL

Erstellt von Kovu vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.720 Views
K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren
Verbindung mit MySQL

verwendetes Datenbanksystem: mysql

Hi,

wollte ne Verbindung aus einem Windows-Progi mit C#.net heraus zu einem MYSQL Server herstellen.

Habe bisher 4 verschiedene Connection Strings ausprobiert, hat nichts geklappt.

Hier mein bisheriger Code:



        private void frm_main_Load(object sender, EventArgs e)
        {
            OdbcConnection con = new OdbcConnection();
            con.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=webserver;Port=3306;Database=backoffice;User=root;Option=3;";
            con.Open();
        }

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

T
219 Beiträge seit 2007
vor 16 Jahren

Hi,

lade Dir doch erstmal von www.mysql.de den Connector/Net 5.1 runter. Das ist ein nativer MySql Treiber und um einiges besser als ODBC. Ausserdem sind Beispiele dabei, da siehst du dann wies gemacht wird.

Grüße

Mfg, Christian

W
32 Beiträge seit 2007
vor 16 Jahren

jap, also ich kann dir auch nur den connecter für .net empfehlen,
den verweis dem project hinzufügen.
also an konfortabilität gibt es nichts besseres bzgl. mysql und c#.

"Arbeit ist die altmodische Form der Vermögensbildung in Arbeitnehmerhand."

Wolfram Weidner (*1925), dt. Journalist

M
402 Beiträge seit 2005
vor 16 Jahren

Hi!

Ich verwende für den Zugriff auf MySQL-Server den
MySQL-Connector anstelle von ODBC.

Connector:
http://dev.mysql.com/downloads/connector/net/

Doku + Beispiele:
http://dev.mysql.com/doc/refman/5.0/en/connector-net.html

lg

T
11 Beiträge seit 2007
vor 16 Jahren

www.connectionstrings.com

Da wirste auf jeden Fall fündig 😉

MySQL Set your custom
connection string values »

This is a compiled connection strings reference list on how to connect to MySQL.

[EDIT]

MyODBC

MyODBC 2.50 Local database

Driver={mySQL};Server=localhost;Option=16834;Database=myDataBase;

COPY TO CLIPBOARD
MyODBC 2.50 Remote database

Driver={mySQL};Server=myServerAddress;Port=3306;Option=131072;Stmt=; Database=myDataBase;Uid=myUsername;Pwd=myPassword;

COPY TO CLIPBOARD
MyODBC 3.51 Local database

Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=myDataBase; User=myUsername;Password=myPassword;Option=3;

COPY TO CLIPBOARD
MyODBC 3.51 Remote database

Driver={MySQL ODBC 3.51 Driver};Server=data.domain.com;Port=3306;Database=myDataBase;User=myUsername; Password=myPassword;Option=3;

UVM...
[/EDIT]

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

hab jetzt:

            MySqlConnection con = new MySqlConnection();
            con.ConnectionString = "Persist Security Info=False;database=backoffice;server=192.168.2.30;user id=root;";
            con.Open();

wieso klappt es nicht?

es kommt immer: "Access Denied "root"@"localhost""

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

L
770 Beiträge seit 2006
vor 16 Jahren

Hallo,

ich glaube nicht, dass dein root ohne Passwort auskommt, oder etwa doch?

lg

lg Lion

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Doch =) Ist nur n Testserver

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Hallo?
Woran liegts den jetzt?

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

L
770 Beiträge seit 2006
vor 16 Jahren

Hallo,

wir geben dir gerne Ratschläge, aber da hilft dir ds Drängen auch nicht.. sollte man mit 200 Beiträgen wissen 😉

Anosnten woran es liegt ist doch klar:

es kommt immer: "Access Denied "root"@"localhost""

da kann doch nur etwas mit deinem Benutzer bzw setting dafür falsch sein.
Eventuell mal Password mitübergeben, aber leer lassen, testen ob root wirklich kein Passwort hat (event ein leerzeichen 😉 )

Und auf den gelinkten Seiten gibts auch Beispiele:
http://dev.mysql.com/doc/refman/5.0/en/connector-net-examples-mysqlconnection.html
Wenn du diese nur auf deinen DB-Server anpasst, müßte es doch klappen.
lg

lg Lion

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Hab ich doch:

Siehe oben: Eingegeben ist "Webserver", also der Hostname des Servers und er versucht auf meinen Rechner zu connecten?!?!?!? Selbst mit IP gehts nicht.

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

3.825 Beiträge seit 2006
vor 16 Jahren

ODBC ? Gibt's das denn noch ?

Im Ernst : ODBC ist langsam, umständlich und unflexibel.

Stelle die Verbindung zum mySQL-Server IMMER zuerst mit dem MySQL Query Browser her !!

Wichtig !

Wenn das klappt dann installiere den .NET Connector von MySQL und probiere das damit.

Wenn der MySQL Server auf einem anderen Rechner ist musst Du die Rechte noch freigeben, z.B. für Linux :

Benutzer anlegen :
/var/lib/mysql/mysql
-> mysql> (MySQL Prompt erscheint)
GRANT ALL PRIVILEGES ON . TO 'User3'@'localhost' IDENTIFIED BY 'user3' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON . TO 'user3'@'%' IDENTIFIED BY 'user3' WITH GRANT OPTION;
QUIT

Zugriff über das Netzwerk erlauben :
Datei /var/lib/mysql/my.conf editieren :
remote ... = 127.0.0.1
ändern in
#remote ... = 127.0.0.1

Ein paar Tipps sind noch hier : http://www.seven-c.de/files/datenbankenhowto.htm

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Danke für die Hilfe, ist nur leider nutzlos =)

Datenbank kann ich per PHP von aussen ansprechen, ausserdem ist es ein XAMPP Windows System.
Nur leider iwie per C#.net nicht

und unmgestiegen auf den Connector bin ich auch schon =)

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

L
770 Beiträge seit 2006
vor 16 Jahren

Hallo,

dann bitte ich dich, wenn man dir Links postet, sie dir auch eventuell genauer anzuschauen und auch derren Möglichkeit zu versuchen:

myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"

Was mir gleich ins Auge sticht ist, dass hier z.B.: kein server tag gibt.. wie bzw. ob das eine Auswirkung hat, weiß ich nicht, Wenn Root kein Passwort hat, würde ich eventuell trotzdem "Password=;" anhängen.

lg

€dit: Rechtschreibkorrektur 😉

lg Lion

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Also Fehler gefunden.

Der User "root" darf nur local zugreifen, da php immer auf dem Server ausgeführt wird, ist das kein Problem per php root zu benutzen. In DotNet schon. 2. User erstellt, fertig.

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Kann mir einer sagen wie ich die Zeilenanzahl rausbekomme?


                MySqlCommand com = new MySqlCommand();
                com.CommandText = "Select * from tbl_message where `To` = '1006' and `Read` = '0'";
                com.Connection = con;
                MySqlDataReader read = com.ExecuteReader();

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

L
770 Beiträge seit 2006
vor 16 Jahren

Ja die Doku zum MySQLDataReader kann dir das sicher verraten.

lg Lion

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Hab nichts dergleichen gefunden

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

L
770 Beiträge seit 2006
vor 16 Jahren

Wenn ich mich nicht irre ist "RecordsAffected" das was du suchst, und wie gesagt, in der Doku auffindbar, aber nur bei geänderten Werten.

Ansonsten musst du, soviel ich weiß, eine Count Abfrage davor machen

lg
Edit: Paar Fehler ausgebessert

lg Lion

3.825 Beiträge seit 2006
vor 16 Jahren

Kovu : Wenn Du das zuerst mit dem MySQL Query browser probiert hättest wärst Du schneller zum Ergebnis gekommen.

Das hat schon seinen Grund warum ich den Leuten sage IMMER zuerst mit dem SQL Management Studio oder mit dem MySQL Query Browser eine Verbindung aufbauen.

Dann sieht man sofort ob es am eigenen C#-Programm oder an den Berechtigungen liegt.

Zeilenzahl :

string sqlstr = "Select count(*) from tbl_message where `To` = '1006' and `Read` = '0'";
...
int anzahl =  (int)(long)dr[0];

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3