Laden...

datenimport MySql -> C#

Letzter Beitrag vor 18 Jahren 23 Posts 3.422 Views
datenimport MySql -> C#

Hallo, irgendwie klappt mein Connecting String nicht, habe folgenden Code angewendet:

string ConnString = "Data Source=server;Database=sandkasten;UserID=root;Password=julia;CommandLogging=false";
string cmd = "SELECT * FROM Teesorten";

            conn = new SqlConnection(ConnString);  
            command = new SqlCommand(cmd, conn);  
            conn.Open();  

Danach macht er nichts, die Konsole öffnet, irgendwie hat er sich verlaufen.
Weiss jemand wie die exakte Syntax ist um aus C# eine MySql Datenbank - Verbindung zu erzeugen?
vielen Dank für eure Hilfe!

Grüsse Maik

Die Klassen SqlConnection u. SqlCommand sind nur für den MS Sql-Server gedacht. Für den MySql - Server brauchst Du einen eigenen Provider. Ich empfehle Dir hier den .NET Connector:

http://dev.mysql.com/downloads/connector/net/1.0.html

BTW:

Wenn Du den Connection-String grade nicht zur Hand hast, hilft ein Blick auf http://www.connectionstrings.com/

hallo motoermaik,

was willst du den mit mysql und c# genau machen ?
denn der treiber ist für gewisse anwendungen nur bedingt tauglich.

lg

Original von AtHeOS
denn der treiber ist für gewisse anwendungen nur bedingt tauglich.

Das interessiert mich. Ich gehe mal davon aus, dass Du von dem von mir empfohlenen Provider sprichst.

Erläutere doch mal "bedigt tauglich"

Sers Kai,

Inzwischen hatte ich folgende Provider im Einsatz
den von Mysql.com(ich glaub bis 1.7 ??)
ByteFx
MysqlDirect con Crlabs

bin beim letzteren geblieben.

Die Verbindung wird beim provider von mysql nicht nur bei einem reader sondern auch bei cmd.ExecuteNonQuery() blockiert.
dies hat z.b. zu folge das bei mehreren threads fehler passieren.
der mysqldirect treiber setzt direkt auf aod auf.
dies ist zwar ein disconnectedmodel, jedoch werden die verbindungen sehr effizient in einem pool hinterlegt und sind beim neuaufbau sehr schnell wieder verfügbar das bei dem provider von mysql nicht der fall ist (hab schon mehrere tests gemacht da ich die geschwindigkeit benötige).

weiteres lassen sich mit dem treiber prima stored procedures ansprechen.
hab dies jedoch noch nicht mit dem von mysql versucht.

lg

Interessant:

Ich habe hier den MySql Provider in einem Webmail im Einsatz. Dieses Webmail wird hauptsächlich für Spamkonten benutzt, d.h. mehrere tausend Emails und eine ebenso große Datenbank. Ab und zu (pro 1000 Logins) bekomme ich den Fehler "Connection unexpectly terminated". Allerdings bin ich mir nicht sich ob dies mit dem Provider oder der Datenbank selbst zu tun hat.

Ansonsten läuft der Provider sehr gut. In Verbindung mit Indices und einem schlauen Caching läuft das Webmail auch super schnell.

BTW: So weit ich das gelesen habe, unterstützt der MySql Provider auch Connectionpooling.

hi kai,

ja das stimmt, er unterstützt pooling auch.
Versuch mal sehr viele connections ständig aufzubauen und zu beenden.
bei mir wurde das recht langsam.

jedoch hat mich die gesamtperformanz noch nicht überzeugt.(bei selects)

naja für meine verhälltnisse sind mehrere tausend recht wenig 😉

die mysql-db an und für sich ist ja recht performant und mit den neuen fuktionen in 5.1 bald eine echte alternative.

aber wenn ich mich recht entsinne gab es da providerseitig ein zwei bugs bei jeden diese fehelr meldung kahm

hier z.b. einer
http://bugs.mysql.com/bug.php?id=15564

welche version benutzt du denn ?

lg

Ich versuche immer die neuste Version zu benutzen, momentan ist das...ähh... ich glaube 1.0.7

Der Fehler ist zwar im Bugtracker dokumentiert, allerdings gibt es bisher noch keine Lösung. Ich kann ihn halt nicht direkt nachvollziehen, was auch die Ursachenforschung recht schwer macht.

Wie schon geschrieben, ich bin mit dem Provider zufrieden, noch dazu ist er kostenlos. Trotzdem sollte man den Provider ab einer bestimmten Anwendungsgröße auf jeden Fall auf Herz und Nieren prüfen....

hallo kai,

der definitive vorteil ist eben das er gratis ist. und so lange du zufrieden bist würde ich auch bei dem bleiben.

leider hatten wir immer seltsame probleme bei den älteren versionen (ist schon 1 jahr her aus dem grund weis ich es nicht mehr im detail) da hat es sich dan angeboten (weil es bei einer projektumsetzung kein thema war einen neuen provider zu kaufen) einen neuen zu besorgen.

wie sieht es mit der unterstützung von stored proceduren aus ?
hast du das schon einmal versucht ?

lg

achja was ich recht blöd fand war, dass diese für die meisten die leistung der mysql datenbank wiederspiegelt. die jedoch um einiges höher ist.

dies schreckt besonders "oracleumsteiger" ab

lg

Original von AtHeOS
wie sieht es mit der unterstützung von stored proceduren aus ?
hast du das schon einmal versucht ?

jup, ist kein Problem und läuft hervorragend.

hast du erfahrungen mit dynamic sql und trigger in mysql ?
irgendwie kommt mir vor das derzeit dynamic sql zwar in proceduren prima funktionieren, jedoch wenn ich diese proceduren über einen trigger aufrufe sagt er mir das dynamic sql nicht unterstützt wird.

find ich von mysql irgendwie total unlogisch in proceduren dies zu unterstützen jedoch in trigger nicht (da man ja oft proceduren über nen trigger aufruft)

Ok, Problem gelöst, habe die .dll bekannt gemacht, jetzt tut die Verbindung.
vielen Dank trotzdem, werde mich bei Gelegenheit revanchieren 🙂

Original von AtHeOS
hast du erfahrungen mit dynamic sql und trigger in mysql ?

dynamic sql in in gespeicherten Prozeduren ja, in triggern nein. Sorry

hi kai,

naja das wird sich mit einer der nächsten versionen sicher erledigt haben.
finde es nur schade, da ich nun die prozedur aus meinem programm aufrufen muss und sie nichtt über die db triggern lassen kann.
ist einfach eine schönere lösung

lg

mySQL in C#

Hallo Kai

Ich bin ein C#/SQL Neuling und habe nach einem ersten, erfolgreich programmierten C# Programm (Windows UPN Taschenrechner) heute erstmals mit mySQL etwas gepröbelt, mit dem Ziel C# mit Datenbanken zu verbinden. Habe mit dem mySQL Administrator eine Datenbank definiert und wollte diese mit einem C# Programm verwalten. Leider ist mir die Kombination C# mit mySQL erst mal nicht gelungen und so bin ich auf deinen Beitrag gestossen.

Ich bin deinem Tipp gefolgt
>Ich empfehle Dir hier den .NET Connector:
>http://dev.mysql.com/downloads/connector/net/1.0.html

und habe auch da weitergeschaut:
>Wenn Du den Connection-String grade nicht zur Hand hast, hilft ein Blick auf >http://www.connectionstrings.com/

Die dort gefundenen Deklaration habe ich 1:1 übernommen;

using MySql.Data.MySqlClient;
MySqlConnection oMySqlConn = new MySqlConnection();
oMySqlConn.ConnectionString = "Server=Server;Database=Test;Uid=UserName;Pwd=asdasd;";
(den connectionString habe ich natürlich angepasst)
oMySqlConn.Open();

Nun wird von C# (Express Edition) aber die zweite Zeile nicht akzeptiert.

Fehler:

  1. Member, wie zum Beispiel Felder oder Methoden sind nicht direkt im Namespace enthalten.
  2. Klasse, Delegat, Enumeration, Schnittstelle oder Struktur erwartet.

Da du offensichtlich über einiges mehr Erfahrung mit mySQL verfügst, möchte ich dich anfragen ob du mir helfen kannst. Wo mache ich einen überlegungsfehler? Kann es sein dass die Express Edition die Verwendung von mySQL nicht zulässt, oder habe ich etwas falsch verstanden? Sollte ich eher SQL 2005 verwenden?

Bin für jeden Tipp dankbar.

Gruss René

Hallo René1,

Hast du einen Verweis hinzugefügt ? Einfach unter Verweise rechte Maustaste klicken und dann Verweis hinzufügen. Dann solltest du die Mysql *.dll anwählen.

lg AtHeOS

Gute morgen... (hab ich ne Nacht hinter mir) 🙁

Wie AtHeOS schon geschrieben hat, musst Du noch den Verweis zum Projekt hinzufügen.

kai. ,

Gute morgen... (hab ich ne Nacht hinter mir)

kannst aber laut sagen 😉

@Rene1:
Was sagt denn die Fehlermeldung?

Das Du nicht einfach in einer C# datei einfach so drauf losprogrammieren kannst.

Du musst ersteinmal eine Klasse anlegen.....

datenimport MySql -> C#

Hallo AtHeOS, Kai und FZelle

Volltreffer! Es lag wirklich am Verweis MySQL.Data (MySQL.dll). C# ist nun glücklich und bringt keine Fehlermeldungen mehr.

Vielen Dank für den Hinweis, nun kann ich munter weiter darauf los programmieren 😉.

Grüsse René

hehe 😉

freut mich zu hören

lg AtHeOS