SO WIRD´S GEMACHT: Herstellen einer Verbindung zu einer Datenbank und Ausführen eines Befehls mit ADO.NET und Visual C# .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 306636 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D306636
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
306636 HOW TO: Connect to a Database and Run a Command Using ADO.NET and Visual C# .NET
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie mit ActiveX Data Objects (ADO) .NET eine Verbindung zu einer Datenbank herstellen und einen Befehl ausführen können.

Voraussetzungen

Der folgenden Liste entnehmen Sie bitte die empfohlene Hardware, Software und Netzwerkinfrastruktur sowie die benötigten Service Packs:

  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oder Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
In diesem Artikel wird vorausgesetzt, dass Sie über Erfahrungen auf den folgenden Gebieten verfügen:

  • Datenbankterminologie
  • Structured Query Language (SQL)

Ausführen eines Befehls

Befehle werden auf Datenbanken für Datenspeicher ausgeführt. Zu den Befehlen zählen alle Anweisungen, die in Bezug auf eine Datenbank erteilt werden können. Sie können mit den Klassen OleDbCommand oder SqlCommand einen Befehl an Ihren Back-End-Datenspeicher übermitteln. OleDbCommand kann sich auf einen bestimmten Datenspeicher beziehen. Dieser Artikel beschäftigt sich sowohl mit der Klasse SqlClient (zur Herstellung einer Verbindung zu SQL Server) als auch mit der Klasse OleDb (für jede beliebige Datenbank, für die ein OLE DB- oder ODBC-Treiber verfügbar ist) und ihrer Verwendung aus ADO.NET heraus, wobei der Code im Allgemeinen für beide Klassen identisch ist.

Mit ADO können Sie Befehle über die Objekte Befehl, Verbindung und Recordset erteilen. In ADO.NET werden Befehle nur über die Befehlsobjekte (SqlCommand oder OleDbCommand) ausgeführt.

Gehen Sie folgendermaßen vor, um einen Befehl ausführen zu lassen:
  1. Öffnen Sie "Visual Studio .NET".
  2. Erstellen Sie in C# eine neue Konsolenanwendung.
  3. Stellen Sie sicher, dass Ihr Projekt einen Verweis auf den Namespace System.Data enthält. Sollte dies nicht der Fall sein, fügen Sie bitte einen solchen Verweis hinzu.
  4. Verwenden Sie die Anweisung using für die Namespaces System und System.Data, damit Sie später in Ihrem Code die Deklarationen in diesen Namespaces nicht qualifizieren müssen. Sie können auch System.Data.SqlClient oder System.Data.OleDb in Ihrem Code verwenden (je nachdem, mit welchem System Sie arbeiten).
    using System;
    using System.Data;
    using System.Data.SqlClient;
  5. Bevor Sie eine Verbindung zu einer Datenbank herstellen können, benötigen Sie eine Verbindungszeichenfolge. Verbindungszeichenfolgen beinhalten alle erforderlichen Informationen zum Einrichten einer Datenbankverbindung (einschließlich Servername, Datenbankname, Benutzerkennung und Kennwort). Die folgende Verbindungszeichenfolge verweist zum Beispiel auf einen lokalen SQL-Server mit einem leeren Kennwort für das Konto 'sa':

    Für OleDb-Verbindungen:
    Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=pubs;Data Source=(local)
    Für SqlClient-Verbindungen:
    User ID=sa;Initial Catalog=pubs;Data Source=(local)
    Anmerkung: Falls Sie Hilfe zur Ermittlung der Verbindungszeichenfolge für Ihre Datenbank benötigen, suchen Sie bitte in der MSDN-Bibliothek nach dem Begriff "ConnectionString". Sie finden diese Bibliothek unter der folgenden Adresse:
    http://search.microsoft.com/us/dev/default.asp
  6. Visual Studio erstellt eine statische Klasse und eine leere Prozedur des Typs Main(). Deklarieren Sie eine String-Variable und speichern Sie die Verbindungszeichenfolge für Ihre Datenbank in dieser Prozedur.
    class Class1
    {
    	static void Main(string[] args)
    	{
    		string sConnectionString = 
    "User ID=sa;Initial Catalog=pubs;Data Source=(local)";
    	}
    }
  7. Erstellen Sie unter Verwendung der Verbindungszeichenfolge ein neues Objekt der Typen OleDbConnection oder SqlConnection und rufen Sie dessen Methode Open auf, um eine Verbindung zu Ihrer Datenbank herzustellen:
    SqlConnection objConn = new SqlConnection(sConnectionString);
    objConn.Open();
  8. Erstellen Sie ein Objekt der Typen SqlCommand oder OleDbCommand und fügen Sie den Befehl ein, den Sie ausführen lassen möchten. Fügen Sie dann bitte noch das Verbindungsobjekt ein, das Sie im vorherigen Schritt erstellt haben. Durch den folgenden Beispielcode wird die INSERT-Anweisung übergeben:
    string sSQL = "INSERT INTO Employee " + 
      "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 
      "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";
    SqlCommand objCmd = new SqlCommand(sSQL,objConn);
  9. Nachdem Sie das Objekt SqlCommand oder das Objekt OleDbCommand erstellt haben, können Sie die Methode ExecuteNonQuery aufrufen, um den Befehl ausführen zu lassen, den das jeweilige Objekt repräsentiert. ExecuteNonQuery ist für Befehle gedacht, die keine Ergebnisse zurückgeben (wie zum Beispiel die Anweisungen DELETE, UPDATE und INSERT). Falls die Anweisung ausgeführt wird ohne einen Ausnahmefehler auszulösen, wurde der Befehl für die Datenbank erfolgreich ausgeführt.
    objCmd.ExecuteNonQuery();
  10. Speichern Sie Ihr Projekt. Klicken Sie im Menü Debuggen auf Start, und führen Sie danach Ihren Befehl für die Datenbank aus.

Verwendung von Parametern

Wenn Sie Befehle in Bezug auf eine Datenbank ausführen (zum Beispiel die Anweisungen UPDATE, INSERT und DELETE oder das Aufrufen gespeicherter Prozeduren), werden diese Befehle häufig parametrisiert. Dadurch haben Sie die Möglichkeit, einen Befehl einmal zu erstellen, aber mehrere Male mit verschiedenen Werten auszuführen, die an Stelle von Parametern eingefügt werden. Für die im vorstehenden Beispiel verwendete INSERT-Anweisung gibt es auch eine entsprechende DELETE-Anweisung, die Sie einsetzen können:
string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id"
Der Parametername ("@emp_id") in dieser DELETE-Anweisung repräsentiert einen Parameter, den Sie bei jeder Ausführung des Befehls durch andere Werte ersetzen können.

Gehen Sie folgendermaßen vor, um Parameter in Verbindung mit Ihrem Befehl zu verwenden:
  1. Erstellen Sie Ihr Objekt des Typs OleDbConnection oder SqlConnection, wie Sie es bei den vorherigen Schritten bereits einmal getan haben.
  2. Ersetzen Sie Werte durch Platzhalter (zum Beispiel "@emp_id" oder "@fname"), so dass in Ihrem Befehlstext Parameter verwendet werden. Als Beispiel dafür kann Ihnen die vorstehende DELETE-Anweisung dienen.
  3. Erstellen Sie ein Objekt der Typen SqlCommand oder OleDbCommand und fügen Sie das Verbindungsobjekt ein, das Sie im ersten Schritt erstellt haben. Fügen Sie jetzt auch noch den Befehlstext mit den Parameterplatzhaltern ein.
  4. Fügen Sie für jeden Parameter der Parameterauflistung für Befehlsobjekte ein Parameterobjekt hinzu. Sie müssen für jeden Parameter einen Namen und einen Datentyp angeben:
    objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
  5. Gespeicherte Prozeduren können mit Parametern versehen sein, die Werte und Ausgabeparameter zurückgeben. Außerdem müssen Sie für jeden Eingabeparameter einen Wert festlegen, bevor Sie die Abfrage ausführen können:
    objCmd.Parameters["@emp_id"].Value = "MSD12923F";
  6. Führen Sie die Abfrage wie folgt aus:
    try 
    {
    	objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e) 
    {
    	Console.WriteLine(e.Message);
    }
    Console.WriteLine("Record Deleted");

Vollständige Codeauflistung

using System;
using System.Data;
using System.Data.SqlClient;

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
	static void Main(string[] args)
	{
		AddRecord();
		RemoveRecord();
		Pause();
	}

	static void Pause()
	{
		Console.WriteLine("Press Enter To Continue....");
		Console.ReadLine();
	}

	static void AddRecord()
	{
		string sConnectionString = "User ID=sa;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "INSERT INTO Employee " + 
		  "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 
	          "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";
		SqlCommand objCmd = new SqlCommand(sSQL,objConn);
		try 
		{
			objCmd.ExecuteNonQuery();
			}
		catch (System.Exception e) 
		{
			Console.WriteLine(e.Message);
		}
		Console.WriteLine("Record Added");
	}

	static void RemoveRecord()
	{
		string sConnectionString = "User ID=sa;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id";
		SqlCommand objCmd = new SqlCommand(sSQL,objConn);
		objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
		objCmd.Parameters["@emp_id"].Value = "MSD12923F";
		try 
		{
			objCmd.ExecuteNonQuery();
		}
		catch (System.Exception e) 
		{
			Console.WriteLine(e.Message);
		}
		Console.WriteLine("Record Deleted");
	}
} 

Informationsquellen

Informationen zur Verwendung von ADO.NET, Datenbankbefehlen und gespeicherten Prozeduren finden Sie auf den folgenden Websites von Microsoft:
SQL Server 2000 Stored Procedures
http://msdn.microsoft.com/library/psdk/sql/cm_8_des_07_31vb.htm

"Diving into Data Access," MSDN Voices - Kolumne
http://msdn.microsoft.com/voices/data.asp

ADO.NET for the ADO Programmer
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

MSDN Online .NET Developer Center
http://msdn.microsoft.com/net

Weitere Informationen erhalten Sie in folgendem Buch:
John Sharp, Jon Jagger Microsoft Visual C# - Schritt für Schritt Microsoft Press, 2001
Weitere Informationen erhalten Sie in folgendem Microsoft Training & Certification - Kurs:
Microsoft Corporation 2389 Programming with ADO.NET


Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Eigenschaften

Artikel-ID: 306636 - Geändert am: Freitag, 17. August 2007 - Version: 1.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbhowto kbhowtomaster kbnokeyword KB306636
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com