C# SQL String auch für mySQL ?

WeitiHG

Grünschnabel
Mahlzeit alle zusammen,
ich programmiere gerade ein DVD Verwaltungsprogramm mit einer SQL Datenbank in C#
ein Freund von mir wollte das Programm auch haben, er hat aber nur einen mySQL und will auch nicht auf SQL umsteigen... Wie kann/soll/muss ich meinen connectionstring jetzt umschreiben das es auch bei ihm funktioniert ?

public class Global
{

private static SqlConnection _con;
public static SqlConnection Connection
{
set
{
_con = value;
}
get
{
if (_con == null)
{
_con = new SqlConnection("packet size=4096;user id=*;password=*;persist security info=True;data source=*;initial catalog=DVDdata");
}
return _con;
}
}
}


Danke im Vorraus

Weiti
 
Hi und willkommen im Forum

Die Klasse SqlConnection ist speziell für den SQL Server gedacht und für kein anderes DBMS.
Du hast die Wahl, die OleDB-Klassen oder Odbc-Klassen zu nutzen und damit deine Anwendung ziemlich allgemein zu halten oder du nutzt den MySQL-Adapter (siehe Homepage von MySQL) um den Zugriff zu realisieren.
Das zweite ist zu bevorzugen, da du so deine SQL-Statements optimal auf das DBMS abstimmen kannst und nicht auf die Verallgemeinerungen von OleDb oder ODBC angewiesen bist.
Den spezifischen Adapter zu nutzen ist zwar mit Auswand verbunden, das Ergebnis ist jedoch sauberer. Dafür definierst du ein Interface, welches du für jedes DBMS, welches du nutzen willst implementierst
 
Ich kann mit deiner Antwort relativ wenig anfangen,
da ich erst seit 3 Wochen C# programmiere.
Aber wenn ich dich richtig verstanden habe, was ich hoffe...
Dann brauche ich das eigentlich nicht da der mySQL zugriff nur für diese eine Person realisiert wird und eigentlich nicht Bestandteil meines Projekts ist...
Könntest du mir das mit der OLEDB etwas näher erklären ?
 
Es gibt verschieden Varianten, auf Datenbanken zuzugreifen
Über den entsprechenden .NET-Adapter, wie du ihn für den SQL Server nutzt. Genauso gibt es diese auch für Oracle, MySQL, ...
OleDb und ODBC verallgemeinern die Schnittstelle. Im ConnectionString musst du dafür den entsprechenden OleDb-Provider angeben, der für das DBMS genutzt werden soll.
http://www.connectionstrings.com/

Ich empfehle dir trotzdem für jedes DBMS eine eigene Klasse zu schreiben, die für das entsprechende DBMS optimiert ist. Diese Klasse ein Interface:
C#:
public interface IRepository
{
    ....
}

public class SqlRepository : IRepository
{
    ....
}

public class MySqlRepository : IRepository
{
    ....
}
C#:
IRepository repos;
if(sqlServer)
{
    repos = new SqlRepository();
}
if (mySql)
{
    repos = new MySqlRepository(); 
}
 
Zurück