Laden...

ODBC MySQL - DataSet- TableAdapter - Keine Insert-, Update-, Deletes-Commands ?

Erstellt von b.wayne vor 12 Jahren Letzter Beitrag vor 12 Jahren 4.457 Views
B
b.wayne Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren
ODBC MySQL - DataSet- TableAdapter - Keine Insert-, Update-, Deletes-Commands ?

verwendetes Datenbanksystem: ODBC- MySQL

.Net Framework 2.0

Hallo,

ich habe ein Problem mit dem ich mich schon jetzt seit meheren Stunden rum ärgere und ich leider auch noch keine brauchbare Lösung dazu finden konnte.

In meinem Projekt baue ich eine Verbindung zu einer MySQL-Datenbank(Oracle) auf. Dies bewerkstellige ich über eine Verbindung des ODBC-Treibers. Nachdem anlegen der Verbindung im Studio, ziehe ich mir meine Tabellen per Drag & Drop über den Server-Explorer in mein DataSet. Die Kommunikation klappt auch soweit, das heist ich kann mir beliebige "Select" Abfragen estellen usw.

**Jedoch werden die Insert-, Update-, Deletes-Anweisungen nicht automatisch generriert wie ich es vom arbeiten mit dem MS-SQL-Server gewohnt bin !?!?!?!.... **

und dies obwohl ich explizit den nötigen Schalter in den "Erweiterten Einstellungen" des beliebigen TableAdapters gesetzt habe. (Dieser Schalter setzt sich merkwürdiger Weise beim nächsten Öffnen der Einstellung wieder auf false!!!)

Dieses Problem ist angeblich bekannt, nur alle Lösungsansätze und Hinweise sind bei mir vergebens. Auch der Hinweis mit nicht vorhandenen PK im DataTable, die sind bei mir vorhanden!

Natürlich könnte ich meine UPDATES-Commands auch selber schreiben aber dieser Ansatz kommt für mich nicht in Frage !!!!! Dies vllt auch, weil ich in der Hinsicht mit Linq ein bischen verwöhnt bin 🙂

Danke schon mal im Voraus !

greetz

1.564 Beiträge seit 2007
vor 12 Jahren

Hallo b.wayne

Ein sehr ähnliches Thema hatten wir gerade erst:

UPDATE mit einer Spalte 'Plan' läuft auf Fehler

Wenn du auf den nativen MySQL Provider wechselst dürfte der Command-Builder funktionieren.

Grundsätzlich rate ich aber vom Command-Builder ab.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

276 Beiträge seit 2007
vor 12 Jahren

Hallo Florian Reischl

Grundsätzlich rate ich aber vom Command-Builder ab.

Ich beutze ihn auch ungern bzw. gar nicht. Dennoch würde ich gern bezüglich der Aussage rein aus Interesse wissen: Warum rätst du davon ab?

Gruss

nitro

1.564 Beiträge seit 2007
vor 12 Jahren

Hi Nitro2k7

Dennoch würde ich gern bezüglich der Aussage rein aus Interesse wissen: Warum rätst du davon ab?

Technisch, weil jede Verwendung des CommandBuilders zu einer unnötigen Abfrage auf die Datenbank führt (siehe dazu meinen Post in dem anderen Thread.).

Ansonsten bin ich kein Freund von Client-Anwendungen die sehr SQL nah arbeiten. Ich finde es sauberer, entweder einen O/R-Mapper zu verwenden oder aber wirklich auf Stored Procedures zu setzen.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

B
b.wayne Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren

Hallo Florian Reischl,

danke erst einmal für deine Antwort.

Auf den Ansatz mit dem MySQL Provider bin auch auch schon gestoßen...letzendlich kann
ich mich damit jedoch nicht anfreunden, da ich da nicht die möglichkeit habe typisiert zu Arbeiten (DataSets,Tables, Rows )....oder liege ich da etwa war falsch ???

Leider habe ich auch keine andere wahl, dies mit der ODBC-Verbindung abzuwickeln. Ich kann und will mich mit hartcodierten SQL-Anweisungen im Quellcode nicht anfreunden von daher ist dies keine Lösungsansatz für mich.

Aber vieleicht liege ich mit meiner Annahme aber auch falsch !?!

grüße

3.825 Beiträge seit 2006
vor 12 Jahren

Auf den Ansatz mit dem MySQL Provider bin auch auch schon gestoßen...letzendlich kann ich mich damit jedoch nicht anfreunden, da ich da nicht die möglichkeit habe typisiert zu Arbeiten (DataSets,Tables, Rows )....oder liege ich da etwa war falsch ???

Ich denke schon (dass Du falsch liegst). Wieso sollte man keine typisierten DS benutzen können ?

Leider habe ich auch keine andere wahl, dies mit der ODBC-Verbindung abzuwickeln.

ODBC ist immer die schlechteste aller Lösungen : altmodisch, langsam, unflexibel.

Commandbuilder benutze ich oft mit MS SQL, MySQL und anderen Datenbanken, hat bisher immer geklappt. Commandbuilder mit ODBC habe ich allerdings noch nicht benutzt.

Grüße Bernd

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

B
b.wayne Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren

Hallo Bernd,

ok dann habe ich da was falsch verstanden. Also wie gesagt möchte ich gerne mit meinem DataSet und vorallem den TableAdaptern weiterarbeiten.

Also ist meine Frage, wie bekomme ich das hin(sei es mit dem Commandbuilder oder mit was auch immer) das ich den Befehl :

TableAdapter.Update(DataTable);

benutzen kann ??

Weil diese "Update" Methode ja nicht automatisch wie sonst generriert wird !

Und vor allem würde mich mal interesieren, was genau die Ursache dafür ist, dass die Anweisungen (Insert,Delete,Update) nicht automatisch generiert werden ???

danke

grüße

3.825 Beiträge seit 2006
vor 12 Jahren

Ich kenne beim Verhalten des CommandBuilders keinen Unterschied zwischen MS SQL und MySQL.

Hier ein Beispiel von mir : http://www.seven-c.de/files/datenbankenhowto.htm#6

Kapitel 6 "Daten ändern"

Hier kann man die Sql-Befehle direkt ersetzen mit MySql-Befehlen, oder besser mit Db-Befehlen (siehe Kapitel 11).

Grüße Bernd

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

1.564 Beiträge seit 2007
vor 12 Jahren

letzendlich kann ich mich damit jedoch nicht anfreunden, da ich da nicht die möglichkeit habe typisiert zu Arbeiten (DataSets,Tables, Rows )

Typisierte DataSets sind nicht wirklich typisiert. Das sind nur Property-Fassaden auf eine untypisierte DataRow (sorry Bernd, nur meine Meinung 😉 ).

Allerdings kannst du das DataSet ja mit jedem beliebigen DB Provider, also natürlich auch dem nativen MySQL Provider, verwenden.

@Bernd:
Hi 😃
Ich glaube es geht b.wayne um eine Designer-Unterstützung um das typisierte DataSet mit dem MySQL Provider zu verheiraten. Da bin ich blank, vielleicht kannst du da aber weiterhelfen.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.