Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Ihr Browser wird nicht unterstützt.

Sie müssen Ihren Browser aktualisieren, um die Website zu verwenden.

Aktualisieren Sie auf die neueste Version von Internet Explorer.

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

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
Eine Microsoft Visual Basic .NET-Version dieses Artikels finden Sie unter 301075.

Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:

Inhalt

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.

Zurück zum Anfang

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)
Zurück zum Anfang

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:
  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.
Zurück zum Anfang

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");
Zurück zum Anfang

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");	}} 
Zurück zum Anfang

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 JaggerMicrosoft Visual C# - Schritt für SchrittMicrosoft Press, 2001
Weitere Informationen erhalten Sie in folgendem Microsoft Training & Certification - Kurs:
Microsoft Corporation2389 Programming with ADO.NET
Zurück zum Anfang

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.
ActiveX Data Objects
Eigenschaften

Artikelnummer: 306636 – Letzte Überarbeitung: 08/17/2007 02:22:00 – Revision: 1.4

  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbhowto kbhowtomaster kbnokeyword KB306636
Feedback
ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");