Feedback

C# - Datenbankverbindung herstellen

Veröffentlicht von am 4/19/2011
(0 Bewertungen)
Codierte Grüße an euch Entwickler! Heute gibt es ein Snippet, was für die angehenden Entwickler unter euch ist. Zwar gibt es genug von diesen Snippets, aber ich dachte mir, ich poste mal eins von mir mit viel Kommentierung. Und zwar wie man recht einfach die Connectivität zu einer Datenbank herstellt. Dabei benutze ich eine Variante, die sich simpel abändern lässt, um andere Datenbanken anzusprechen, wie z.b. Access und MySql und für Vererbung geeignet ist. In meinem Beispiel beziehe ich mich vorerst auf Sql.
Wie man in dem unteren Beispiel sehen kann, benutze ich System.Data.SqlClient.SqlConnection und System.Data.SqlClient.SqlCommand für die Instanzierung.
Für eine Access-Verbindung bräuchtet ihr System.Data.Odbc.OdbcConnection und System.Data.Odbc.OdbcCommand. Des Weiteren müsstet ihr bei Access den Datenbank-Treiber angeben, welcher auch auf dem System installiert sein muss!. Bei der 2003er-Version war das glaub ich
DbConnectionStringBuilder["Driver"] = "Microsoft Access Driver (*.mdb)";

Wenn ihr eine MySql-Verbindung herstellen möchtet, benötigt ihr den MySql-Connector für .Net. Die Instanzierung erfolgt dann über MySql.Data.MySqlClient.MySqlConnection und MySql.Data.MySqlClient.MySqlCommand.

Viel Spaß mit dem Snippet und auf bald!
//Wir benutzen eine Common.DbConnection als Object und instanzieren dies als SqlConnection
//Hier erfolgt die Definition, welche Datenbankverbindung wir nutzen, also ob Access,MySql,Sql, usw.
//Anmerkung: Man könnte DbConnection auch mit der using-Direktive benutzen!
System.Data.Common.DbConnection DbConnection = new System.Data.SqlClient.SqlConnection();
//Der DbCommand dient zum Absenden der Queries, hier auch wieder als SqlCommand instanziert
System.Data.Common.DbCommand DbCommand = new System.Data.SqlClient.SqlCommand();
//Anschließend weisen mir dem Command die entsprechende Verbindung zu
DbCommand.Connection = DbConnection;
//DbConnectionStringBuilder dient zur einfachen Erstellung von ConnectionStrings, man kann auch ohne Arbeiten,
//und den ConnectionString direkt beim Construktur der SqlConnection übergeben.
//Für die Verbindungszeichenfolgen empfehle ich: http://www.connectionstrings.com/
//In unserem Fall verbinden wir uns zu einem SqlServer2005
System.Data.Common.DbConnectionStringBuilder DbConnectionStringBuilder = new System.Data.Common.DbConnectionStringBuilder();
//Anwählen des Datenbank Servers
DbConnectionStringBuilder["Server"] = "localhost";
//Anwählen der Datenbank, diese kann später entweder über DbConnection.ChangeDatabase oder per Query geändert werden
DbConnectionStringBuilder["Database"] = "Northwind";
//Integrated Security, bedeutet, dass in diesem Fall die Windows-Authentifizierung genutzt wird
//Ansonsten, werden die Parameter: "User ID" und "Password" zur Authentifizierung genutzt
DbConnectionStringBuilder["Integrated Security"] = "SSPI";
//Nun übergeben wir den ConnectionString an die DbConnection
DbConnection.ConnectionString = DbConnectionStringBuilder.ConnectionString;
 
try
{
    //Öffnen der Verbindung
    DbConnection.Open();
    //Wir überprüfen sicherheitshalber, nochmal den Status der Verbindung, ob diese auch wirklich geöffnet ist,
    //bevor wir einen Query absenden
    if (DbConnection.State == System.Data.ConnectionState.Open)
    {
        int Return = 0;
        //Wir haben eine Tabelle TEST mit den Spalten ID und Wert, in welche wir einen neuen Datensatz einfügen
        DbCommand.CommandText = "INSERT INTO dbo.TEST (ID, Value) VALUES (3,'This is a test');";
        //ExecuteNonQuery gibt die Anzahl der betroffenen Zeilen zurück. Bei Selects immer -1;
        Return = DbCommand.ExecuteNonQuery();
        //Nun könnten wir noch den Rückgabewert überprüfen, dieser dürfte 1 sein
    }
    //Schließen der Verbindung, welches man auch weglassen könnte, da die Dispose-Methode dies auch übernimmt
    //Jedoch sinnvoll, wenn ohne Dispose gearbeitet wird
    DbConnection.Close();
 
}
//Verwerfen der Verbindung
finally
{
    DbConnection.Dispose();
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!