Hallo,
grundsätzlich ist davon abzuraten, immer den Odbc-Provider zu verwenden: Für jedes DBMS gibt es
optimierte DbProvider, zum Beispiel auch für MySql. Informationen über Möglichkeiten der Verbindung und DbProvider findest Du unter
ConnectionStrings.
Wenn Du variabel sein willst, bietet sich der Abschnitt ConnectionStrings der app.config an, siehe
ConnectionStringSettings-Klasse. UserName und Password sollten natürlich (verschlüsselt) separat gespeichert und per Code eingefügt werden.
Ein mögliches Vorgehen wäre über eine separate Methode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| DataTable GetData(string connectionString, string selectString) { DataTable result = new DataTable(); using(DbConnection conn = new DbConnection(connectionString)) { DbDataAdapter da = new DbDataAdapter(); DbCommand cmd = new DbCommand(selectString); cmd.Connection = conn; da.SelectCommand = cmd; da.Fill(result); } return result; } |
An dieser Konstruktion ist normalerweise anstelle der
Db-Klassen die spezielle
MySql-Klasse zu verwenden (dann können auch mehrere Befehle zusammengefasst werden). Die allgemeinen Db-Klassen sind
abstract und können so nicht verwendet werden!
Es gibt eine Alternative, die ich hier aber nur skizziere, weil sie vertieftes Verständnis erwartet: DbProviderFactories.GetFactory-Methode liefert
DbProviderFactory, CreateConnection usw. liefern Instanzen, die wie Db-Klassen heißen und verwendet werden, aber tatsächlich spezielle Instanzen sind und akzeptiert werden.
Gruß Jürgen