Laden...

MySql und ADO.NET

Erstellt von chriscolm vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.019 Views
C
chriscolm Themenstarter:in
112 Beiträge seit 2009
vor 13 Jahren
MySql und ADO.NET

verwendetes Datenbanksystem: MySql 5.5.8, MySql 5.1.49, MySql 5.1.28
ADO.NET Connector 6.2.2
Windows XP, Windows 7

Moin,

also MySql und ich werden keine guten Freunde. Folgendes Phänomen:


DbCommand cmd = new MySqlCommand;
...
...
DbDataReader reader = cmd.ExecuteReader();
while(reader.Read()){
...
}

Soweit kein aufregender Code, der eigentlich auch funzt, ausprobiert mit ner MySql 5.1.28 Datenbank, einer 5.1.49 Datenbank und einer 5.5.8 Datenbank, und jetzt die Überraschung: bei 5.5.8 ist reader.HasRows IMMER = false, egal ob Zeilen in der Ergebnismenge sein müssen oder nicht, folglich wird die Schleife auch nicht durchlaufen. Toll, nicht wahr?
Ich habe den dringenden Verdacht dass MySql unter Linux bereits in der 5.1.49 dieses Verhalten an den Tag legt.
Da ich gerade kein MySql unter Linux zur Verfügung habe, hat jemand ähnliches festgestellt?

Grüße

Christian

Gelöschter Account
vor 13 Jahren

wenn, dann liegt sowas immer am Db-Provider und nicht an der Datenbank. Hast du dir schon mal angeschaut, ob die Mysql versionen überhaupt von deinem Provider unterstützt werden?

C
chriscolm Themenstarter:in
112 Beiträge seit 2009
vor 13 Jahren

Moin,
so, jetzt wird es richtig esoterisch.
Habe meinen Code mal soweit modifizert, dass oben skizzierter Funktionsaufruf wiederholt wird, wenn der DataReader nicht die erwartete Anzahl an Zeilen zurückgibt. Beim zweiten oder dritten Mal liest der DataReader dann auch anstandslos Zeilen aus. Ey, das ist doch total krank.
Gleicher Code läuft übrigens auch anstandslos auf einer Microsoft SQL-Server Datenbank (natürlich mit den ensprechenden Verbindungsobjekten etc.)...

Ich denke, ich kann davon ausgehen, dass der ADO.NET-Treiber mit der Datenbank sprechen kann.

Grüße

Christian

A
350 Beiträge seit 2010
vor 13 Jahren

Schonmal probiert über das EF mit dem Connector zu arbeiten und zu gucken obs evtl. woanders dran liegt ?