HowTo: Datenbankverbindungen – .NET & MySQL

In diesem HowTo ging es um die Datenverbindung zwischen .NET und MS SQL. Natürlich bietet .NET von Haus aus einen MS SQL Provider, aber wie sieht es mit MySQL aus? Wie kann man mit .NET auf eine MySQL Datenbank zugreifen?

Daher geht es um dieses Thema:

Heute: .NET und MySQL

Das Testprojekt wird ähnlich wie das MS SQL Beispiel sein.

  • Benötigte Software:

Die Datenbank Software MySQL – aus Einfachheitsgründen nehmen wir einfach ein vorgefertigtes Paket, welches unter PHP Entwicklern wohl bekannt ist: XAMPP – Apache, PHP, MySQL etc. im Bundel. Wer bereits einen MySQL Server hat braucht das natürlich nicht.
Um mit .NET darauf zuzugreifen benötigen wir noch den MySQL Daten Provider – MySQL Connector .NET 5.0.
(und natürlich VS – siehe erstes HowTo).

  • Test Datenbank erstellen (MySQL mit XAMPP)

Sobald XAMPP erfolgreich auf dem System installiert wurde, öffnet man das Control Panel und startet den Apachen sowie den MySQL Server.

image

Bei Vista (und wahrscheinlich auch bei XP SP2) meckert die Firewall – die beiden Sachen nicht blocken.

Unter der Webadresse http://localhost/xampp/index.php findet man nun das Administrationspanel. Im Menü auf der linken Seite befindet sich der für uns wichtigste Punkt:

image

Über phpMyAdmin legen wir unser Datenbank an (”dotnet“) und dann unsere Tabelle “test“ mit Spalte “id” als “autoincrement int” und “value” als “varchar” für unseren Text.

image

Danach auf “Speichern” und fertig ist unser DB.

Wichtig: Den MySQL Server die ganze Zeit über anlassen – den brauchen wir bis zuletzt ;)

  • MySQL Connector installieren

Damit wir einen MySQL Datenprovider bekommen, müssen wir nun den Connector installieren.

  • Konsolenprogramm erstellen

In unserem Konsolenprogramm fügen wir nun noch die Referenz zu der MySQL.Data DLL hinzu, sodass wir den Namespace später verwenden können:

image

Unter dem Punkt “MySQL.Data” finden wir dann unseren Connector:

image

Dadurch steht uns jetzt die Namespaces MySql.Data & MySql.Data.MySqlClient zur verfügen welche wir einbinden:

using MySql.Data;
using MySql.Data.MySqlClient;

Teil 1: DB Verbindung öffnen

Der Namespace MySqlClient enthält alles was wir generell brauchen und ist ähnlich sturkturiert wie SqlClient für MS SQL. Anstatt einer SqlConnection Klasse gibt es halt eine MySqlConnection Klasse.

            MySqlConnection connection = new MySqlConnection(@"Server=127.0.0.1;Uid=root;Pwd=;Database=dotnet;");
            connection.Open();

Wichtig: Der Connectionsstring ist etwas anders – MySQL stellt allerdings ein kleines Tutorial bereit, sowie bei speziellen Fragen auch ein Forum.
Achtung: DB Verbindung wird am Ende unseres Beispieles wieder geschlossen.

Teil 2: Werte in die DB schreiben

Hier sieht man ebenfalls die Anlehnung an die SqlCommand Klasse – es gibt eine MySqlCommand Klasse, welche alle (bzw. die “wichtigsten”) Methoden ebenso enthält:

            MySqlCommand insertCommand = new MySqlCommand("INSERT INTO test (value) VALUES ('Test')", connection);
            int i = insertCommand.ExecuteNonQuery();

Teil 3: Werte aus der DB lesen

Für das befüllen eines Datasets oder einer Datatable gibt es den MySqlDataAdapter mit der “Fill(…)” Methode (gleiches System wie bei MS SQL, nur mal mit MySql davor ;) ).

            MySqlCommand readCommand = new MySqlCommand("SELECT * FROM test", connection);
            MySqlDataAdapter adapter = new MySqlDataAdapter(readCommand);
            DataTable datatable = new DataTable();  

            adapter.Fill(datatable);
            for (int x = 0; x < datatable.Rows.Count; x++)
            {
                object[] values = datatable.Rows[x].ItemArray;
            }

Teil 4: Daten in der DB ändern

Ebenso implementieren wie das schreiben von Daten, nur anderes SQL Statement & wieder benutzen wir MySqlCommand dafür.

            MySqlCommand updateCommand = new MySqlCommand("UPDATE test SET value = 'UpdatedTest'", connection);
            int updatedReturnValue = updateCommand.ExecuteNonQuery();

Teil 5: Daten aus der DB löschen

Ebenso wie oben beschrieben & gleiches Prinzip wie bei unserem MS SQL Beispiel.

                MySqlCommand deleteCommand = new MySqlCommand("DELETE FROM test", connection);
                int deleteReturnValue = deleteCommand.ExecuteNonQuery();
 image

Abschließende Bemerkung

Der .NET Connector von MySQL erlaubt es auf sehr einfache Art und Weise auf eine MySQL DB zuzugreifen – wer bereits mit MS SQL und .NET zutun hatte, kann ebenso “leicht” mit MySQL arbeiten. Die tiefergehenden Sachen sollten dann direkt bei MySql nachgeschaut werden, wie z.B. der Zugriff auf gespeicherte Prozeduren oder BLOB Daten verarbeiten.
Wie auch bei dem MS SQL Beispiel gilt auch hier: Der Code soll nur demonstrieren, wie man ganz primitiv auf die DB zugreift. Es gibt bestimmt bessere Methoden, allerdings soll dies nur eine Einführung sein und zeigt schon ganz gut, das man .NET und MySQL auch sehr gut zusammen nutzen kann.

Infos für den Source Code:

Die Tabelle sollte “test” heißen und die Spalten “id” und “value”. Die Datenbank sollte “dotnet” heißen oder der Connectionstring sollte geändert werden. Falls man eine bereits eingerichtete MySql DB nutzt, muss man natürlich die Zugangsdaten entsprechend anpassen.

[ Download Source Code ]

HowTo: Datenbankverbindungen – .NET & MS SQL 2005

Datenbanken sind immer ein zentrales Thema, aber als Einsteiger in das Thema hatte ich damals keinen guten Überblick, wie man das ganze mit .NET zum Laufen bekommt. Daher hier eine kleine “Einführung” zum Thema Datenbankverbindungen – Datenbank X mit .NET.

Heute: .NET und Microsoft SQL 2005

Das Testprojekt ist sehr sehr simpel gehalten – das Thema ADO.NET ist sehr groß, daher wollte ich nur auf primitivste Art und Weise zeigen, wie man sich zu einer DB verbinden und dort Aktionen ausführen kann. Typisierte Datasets oder O/R Mapper wie Linq to SQL oder Subsonic etc. können ebenfalls genutzt werdne. Insbesondere mit Linq werde ich mich auch noch zuwenden, aber vorher mal zu den “Basics” ;)

  • Benötigte Software:

Die Datenbank-Software – SQL Server 2005 Express Edition - gibts hier zum Runderladen.
Die Management Software – SQL Server Management Studio Express – gibts hier zum Runderladen.
Visual Studio 2005 Express Edition gibts hier zum Runterladen.

  • Test Datenbank erstellen:

Sobald unter den Windows Dienster der “SQL Server (SQLEXPRESS)” gestartet ist (nach der Installation ist dies standardmäßig automatisch der Fall), können wir über das SQL Management Studio Express unsere Testdatenbank anlegen.

image

Das anlegen einer Testdatenbank wurde ebenfalls bereits bei den Software Factories behandelt, sodass ich jetzt am Ende diese Testdatenbank habe:

image

  • Konsolenprojekt erstellen

Wir erstellen einfach ein kleines Konsolenprojekt und wollen einfach ein paar Eintragungen vornehmen, ein Eintrag abändern, die Daten auslesen und wieder löschen. Das selbe werden wir zudem später mit Oracle und MySQL versuchen.

image

Im “Server Explorer” fügen wir unsere Datenbankverbindung hinzu:

image

Als Datenquelle geben wir “Microsoft SQL Server” an und als Datenanbieter “.NET Framework-Datenanbieter für SQL”:

image

Sobald man sich mit der jeweiligen Datenbank verbunden hat, sieht man in den Eigenschaften den “ConnectionString”:

image

Ansonsten brauchen wir diese Verbindung im VS eigentlich nicht. Es gibt aber Steuerelemente die darauf zugreifen können – in unserem sehr einfachen Beispiel benötigen wir das aber nicht.

Eine gute Auflistung von den ConnectionsStrings und ihrer Zusammensetzungen findet man hier: www.connectionsstrings.com

Die Demoanwendung ist sehr einfach und kann weiter unten runtergeladen werden.

Teil 1: DB Verbindung öffnen

Über die Klasse “SqlConnection” öffnen wir eine Verbindung zur Datenbank.
Achtung: Die DB Verbindung sollte unbedingt wieder am Ende geschlossen werden – man kann dies auch über das “using-Statement” erreichen

            SqlConnection connection = new SqlConnection(@"Data Source=REMAN-NOTEBOOK\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True"); 

            connection.Open();

Teil 2: Werte in die DB schreiben

Einen SQL Befehl an die DB schicken geht ganz einfach über die Klasse “SqlCommand“, wo wir noch unsere Verbindung als Parameter mitgeben und diese Ausführen. Der Rückgabewerte entspricht der Anzahl an Zeilen, welche durch den SqlBefehl angepasst werden mussten.

SqlCommand insertCommand = new SqlCommand("INSERT INTO [Test].[dbo].[Test] ([value]) VALUES ('Test')", connection); 

            int i = insertCommand.ExecuteNonQuery();

Teil 3: Daten aus der Datenbank holen

Um auf die Werte aus der Datenbank zuzugreifen wird es ein klein wenig komplizierter. Unser SqlCommand (Select * From…) wird einem SqlDataAdapter übergeben, welcher eine DataTable füllt. Diese DataTable enthält dann unsere gesamte Tabelle samt den Werten. Eine andere Vorgehensweise ist sicherlich auch möglich (Datasets/typisierte Datasets…) wurde hier aber aus den oben genannten Gründen nicht gemacht.

            SqlCommand readCommand = new SqlCommand("SELECT * FROM [Test].[dbo].[Test]", connection); 

            SqlDataAdapter adapter = new SqlDataAdapter(readCommand); 

            DataTable datatable = new DataTable();            adapter.Fill(datatable); 

            for (int x = 0; x < datatable.Rows.Count; x++) 

            { 

                object[] values = datatable.Rows[x].ItemArray; 

            }

In values[0] sind die Werte enthalten die in der Spalte “ID” stehen und in values[1] die in der Spalte “values”. Diese kann man nun in andere Objekte casten usw.

Teil 4: Daten aus der Datenbank ändern

Entspricht der Vorgehensweise wie beim Werteschreiben, nur halt mit einem anderen Sql Befehl:

            SqlCommand updateCommand = new SqlCommand("UPDATE [Test].[dbo].[Test] SET value = 'UpdatedTest'", connection); 

            int updatedReturnValue = updateCommand.ExecuteNonQuery();

Teil 5: Daten aus der Datenbank löschen

Ebenfalls so wie oben beschrieben:

SqlCommand deleteCommand = new SqlCommand("DELETE FROM [Test].[dbo].[Test]", connection); 

                int deleteReturnValue = deleteCommand.ExecuteNonQuery();
 

Abschließende Bemerkung

In der praxis würde ich eher typisierte Datasets oder andere O/R Mapper einsetzen. Die Software Factories (siehe Service Factory)bringen zudem ebenfalls einen “O/R” Mapper mit, welcher “zusammen klickbar” ist und daher die lästige Schreibarbeit für die CRUD Befehle erspart.
LINQ to SQL oder Subsonic gehen ebenfalls in die Richtung O/R Mapper und sind ebenfalls sehr interessant, sodass dieser Post nur mal die “basics” vermitteln sollte.

Achtung: Zum Ausführen des Democodes muss natürlich der ConnectionString und die DB so erstellt sein, wie oben beschrieben. Auserdem sollte Visual Studio im Administrator-Modus laufen, ansonsten gibts leider einen Fehler.

[ Download Democode ]

HowTo: Oracle 10g und die Oracle Developer Tools unter Vista

Nach dem ich länger für die Installation der “Oracle Developer Tools for Visual Studio .NET” auf meinem Vista System brauchte als mir lieb war, habe ich ein kleines HowTo verfasst.

HowTo: Oracle 10g und die Oracle Developer Tools unter Vista

Viel Spass

HowTo: Oracle 10g und die Oracle Developer Tools unter Vista

Einleitung

Um eine Verbindung zu einer Oracle Datenbank aufzubauen gibt es viele Wege. Der wohl einfachste für .NET ist die „Oracle Developer Tools for Visual Studio .NET“ zu nutzen. Diese integrieren eine ganze Reihe an Tools und den Oracle Namespace in das Visual Studio. Nach erfolgreicher Installation gelingt das Ansprechen der Datenbank mit wenigen Zeilen Code, zusätzlich liefert Oracle viele nützliche Codebeispiele gleich mit. Die Installation dieser Tools unter Vista ist allerdings etwas umständlicher.
Anleitung
Das benötigen Sie:
1. Visual Studio 2005
2. Oracle 10g Client 10.2.0.3.0 for Vista
http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10203vista.html
Bei der Installation sollte man möglichst diese Reihenfolge beachten:
(Oracles Installationsanleitung)

Schritt 1:
Installieren Sie das Visual Studio 2005.

Schritt 2:
1. Installieren Sie den „Oracle 10g Client 10.2.0.3.0 for Vista“ und wählen Sie die Installationsart „Administrator“ aus.

Schritt 3:
Wenn Sie Office 2007 installiert haben:
1. Wechseln Sie in der Windows Komandozeile in das Verzeichnis „\OUI\Bin“
2. Führen Sie „setup.exe use_prereq_checker=false“ aus
3. Wichtig: Geben Sie als Installationsverzeichnis das Verzeichnis an, in das Sie den Oracle 10g Client in Schritt 2 installiert haben.

Wenn Sie kein Office 2007 installiert haben:
1. Wechseln Sie in der Windows Kommandozeile in das Verzeichnis „\OUI\Bin“
2. Wichtig: Geben Sie als Installationsverzeichnis das Verzeichnis an, in das Sie den Oracle 10g Client in Schritt 2 installiert haben.

Als nächstes benötigten Sie die “product.xml”, dazu müssen Sie das folgende Setups runterladen:
ODAC1020221.exe or ODTwithODAC1020221.exe
Wenn man diesen entpackt findet man die “product.xml”.

Dazu dann später noch das dazugehörige Setup starten und die Orcale Components installieren und den TNS Name soweit anpassen.

Viel Spass!

Artikel

Amazon Web Service:
HowTo: Produktsuche mit den Amazon Web Services

eBay API:
HowTo: eBay API (Grundvoraussetzungen)
HowTo: eBay API (Suchen mit eBay…)
HowTo: eBay API (Aktuelle Suchbegriffe…)

Google Maps API:
HowTo: Google Maps API (Grundvoraussetzungen)

HTML / Javascript:
HowTo: Webanwendung debuggen (Javascript & HTML debuggen mit den entsprechenden Tools)
HowTo: Mauseingaben & Javascript (Wie bastelt man ein Paint mit Javascript?)
HowTo: Xml mit Javascript Parsen (Zugriff auf Nodes & Attribute)
HowTo: Objektorientierte Programmierung / OOP in Javascript (Eine einfache Klasse erstellen)
HowTo: Javascript Event “onscroll” nutzen
HowTo: Javascript Mouse Over – Mousepositionen für Details

Microsoft ASP.NET:
HowTo: Microsoft ASP.NET AJAX (Grundlagen)
HowTo: Microsoft ASP.NET AJAX (Praktischer Anfang)
HowTo: Microsoft ASP.NET AJAX (Clientseitiger Aufruf von Webmethoden)
HowTo: Microsoft ASP.NET AJAX (PageMethods – Webmethoden aufrufen ohne ASMX Datein)
HowTo: Json-Services erstellen (…oder wie erstell ich dynamisch Javascript?…oder Web 2.0 ohne AJAX?)
HowTo: Dynamische vCards als Link zum Importieren anbieten
HowTo: Microsoft AJAX Client API nutzen

Microsoft .NET:
HowTo: Datein per FTP über mit .NET runterladen und speichern
HowTo: Interfaces/Schnittstellen verstehen – mal auf simple Art und Weise
HowTo: XML erstellen mit XmlAttributes
HowTo: PDF’s erstellen unter .NET mit NFop

Microsoft Silverlight:
HowTo: Microsoft Silverlight 1.0 (Grundlagen)
HowTo: Microsoft Silverlight 1.0 (Praktischer Anfang)
HowTo: Microsoft Silverlight 1.0 (Spiegeleffekte erzeugen)
HowTo: Microsoft Silverlight 1.0 (dynamische Spiegeleffekte)
HowTo: Microsoft Silverlight 1.0 (Bilder “kippen” samt Spiegeleffekt)
HowTo: Microsoft Silverlight 1.0 (Webanwendungen mit dynamischen SilverlightHosts verschönern)
HowTo: Erstellen eines Silverlight 1.0 Videoplayers mal auf einfache Weise
HowTo: Silverlight mit dem “object” Tag als embedded HTML anbieten

Microsoft Patterns&Practices Software Factories:
HowTo: Microsoft Patterns&Practices Software Factories verstehen
HowTo: Microsoft Patterns&Practices – Web Service Factory / Service Factory (Teil 1: Grundlagen & ASMX Variante)
HowTo: Microsoft Patterns&Practices – Web Service Factory / Service Factory (Teil 2: WCF Variante)
HowTo: Microsoft Patterns&Parctices – Web Service Factory / Service Factory (Teil 3: Praktisches “Hello World”)

Microsoft Office SharePoint 2007:
HowTo: Automatisierte Backups mit dem Microsoft Office SharePoint 2007

Microsoft Visual Studio:
HowTo: Visual Studio 2005 für .NET 3.0 (WPF, WCF, WF) rüsten

AJAX:
HowTo: AJAX
HowTo: AJAX und ASP.NET Webservices (und die Sache mit dem GET)

Windows Live ID:
HowTo: Windows Live ID Web Authenticaton (Grundlage & Installation)

Microsoft Virtual Earth:
HowTo: Microsoft Virtual Earth (Praktischer Einstieg)

XML:
Guide: XML (Einführung)
Guide: XML (Basiswissen)
Guide: XML (DocumentType Definitions DTDs)
Guide: XML (XML Schema – Teil 1)
Guide: XML (XML Schema – Teil 2)
Guide: XML (XML Schema – Teil 3)

.NET & Datenbankverbindungen:
HowTo: Datenbankverbindungen – .NET & MS SQL 2005
HowTo: Datenbankverbindungen – .NET & MySQL

Oracle:
HowTo: Oracle 10g und die Oracle Developer Tools unter Vista