Datenbankzugriff
-
Hallo liebe User,
ich habe vor einiger Zeit in der Schule datenbankbasierende Java-Programme programmiert. Dazu haben wir einen lokalen mysqlserver über xampp emuliert und das Programm heidisql verwendet. Die Datenbankverbindung hat einwandfrei geklappt.
Nun entspricht jedoch privat C# erheblich mehr meinen Anforderungen und ich finde auch die Forms-Editierbarkeit um Längen besser, so dass ich ein Program in C# programmieren wollte (Kostenrechner), welches auf die Datenbank zugreifen kann.
Hierbei habe ich jedoch erhebliche Probleme bei der Herstellung einer Verbindung zum lokalen Server. Die Verbindung baue ich folgendermaßen auf:
SqlConnection con = new SqlConnection(); con.ConnectionString = "Data Source=(local);" + "Initial Catalog=DBKostenrechner;" + "Integrated Security=sspi"; con.Open();
(da ich noch am Testen bin vorerst ohne Benutzername und Passwort Verarbeitung)
Beim debuggen wirft das Programm eine Exception an dem Punkt con.Open().
Diese besagt, dass der Server nicht gefunden wird. Nach stundenlangem Googeln habe ich herausgefunden, dass es entweder daran liegen kann, dass keine Remotezugriffe erlaubt sind oder dass ein Port geblockt wird. Ich frage mich nun, weshalb java damit aber keine Probleme hatte oder sind mysql-Server und heidisql nicht für C# geeignet? Vielleicht habe ich auch den völlig falschen Ansatz?Für mich ist wichtig, dass der Server aus kostengründen lokal startbar ist und das die dafür verwendete Software eben kostenlos ist.
-
boenz666 schrieb:
SqlConnection
...oder sind mysql-Server und heidisql nicht für C# geeignet?
msdn.microsoft.com schrieb:
Represents an open connection to a SQL Server database. This class cannot be inherited.
SqlConnection ist für den SQL Server, du musst schon eine Schnittstelle für MySQL verwenden. Ich selbst meide MySQL wie die Pest, so das ich dir den direkten Weg nicht nennen kann, aber du wirst bei Google in den ersten Ergebnissen wenn du nach c# und mysql suchst bereits Treffer finden.
Nachtrag:
boenz666 schrieb:
Für mich ist wichtig, dass der Server aus kostengründen lokal startbar ist und das die dafür verwendete Software eben kostenlos ist.
Dies gilt auch für den MS SQL Server Express, wobei ich mich Frage was "lokal startbar" mit Kostengründen zu tun hat. Entweder will man eine Client/Server Datenbank, oder wenn man dies nicht braucht und immer lokal auf einen Rechner arbeitet, wären Clientdatenbanken eine Alternative (MS SQL Server Compact, um nur ein Beispiel zu nennen).
Weiterer Nachtrag: Wenn du auf MS SQL setzt, könntest du alternativ auch das Entity Framework verwenden (sollte auch Treiber für andere Datenbanken geben).
-
Relevante Links dazu:
http://dev.mysql.com/downloads/connector/net/ <- der Connector muss als Referenz im Projekt eingebunden werden
http://dev.mysql.com/doc/refman/5.6/en/connector-net-tutorials-intro.html
-
@asc
Vermutlich "aus Kostengründen", weil man dann die Möglichkeit hat mit nur einem Rechner auszukommen. Und eben keinen 2. Rechner als DB-Server braucht.Und der Wunsch das machen zu können mann ja durchaus parallel zu dem Wunsch existieren, im Falle des Falles auch eine "echte" Client/Server DB verwenden zu können.
Ich sehe da also nicht unbedingt einen Konflikt.
-
hustbaer schrieb:
@asc
Vermutlich "aus Kostengründen", weil man dann die Möglichkeit hat mit nur einem Rechner auszukommen. Und eben keinen 2. Rechner als DB-Server braucht.Und der Wunsch das machen zu können mann ja durchaus parallel zu dem Wunsch existieren, im Falle des Falles auch eine "echte" Client/Server DB verwenden zu können.
Ich sehe da also nicht unbedingt einen Konflikt.
Das hast du genau richtig gesagt.
Vielen Dank an alle, habe den MySql Connector installiert, die Bibliothek eingebunden und die Objekte umbenannt, nun funktioniert es einwandfrei. Wusste leider nicht, dass das "My" einen Unterschied macht. Dank euch kann ich aber nun voll loslegen zu programmieren