Jak połączyć się z bazą danych i uruchomić polecenie za pomocą technologii ADO 2005 i programu Visual C# 2005 lub technologii ADO.NET i programu Visual C# .NET

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 306636 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule krok po kroku przedstawiono sposób korzystania z technologii ADO 2005 lub ADO.NET w celu połączenia z bazą danych i uruchomienia polecenia.

Wymagania

Na następującej liście uwzględniono podstawowe składniki zalecanego i niezbędnego sprzętu, oprogramowania, infrastruktury sieciowej i dodatków Service Pack:
  • System Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server lub Microsoft Windows NT 4.0 Server
  • Program Microsoft Visual Studio 2005 lub Microsoft Visual Studio .NET
W tym artykule założono, że użytkownik zapoznał się z następującymi zagadnieniami:
  • Terminologia dotycząca baz danych
  • Język SQL (Structured Query Language)

Jak uruchomić polecenie

Polecenia działające na bazy danych służą do podejmowania działań względem magazynów danych oraz do dołączania dowolnej instrukcji, którą można zastosować do bazy danych. Można użyć klasy OleDbCommand lub SqlCommand w celu wykonania polecenia na danym magazynie danych, a klasa OleDbCommand może być specyficzna dla tego magazynu danych. W tym artykule zademonstrowano klasę SqlClient (w celu połączenia z komputerem, na którym działa serwer Microsoft SQL Server) oraz klasę OleDb (dla dowolnej bazy danych z dostępnym sterownikiem OLE DB lub ODBC) w obrębie technologii ADO.NET. Kod jest dla obydwu klas w zasadzie taki sam.

W ramach technologii ADO polecenia można wykonywać za pomocą obiektów Command, Connection lub Recordset. W technologii ADO.NET polecenia wykonywane są tylko przez obiekty Command (klasa SqlCommand lub OleDbCommand).

Aby uruchomić polecenie, wykonaj następujące kroki:
  1. Wykonaj następujące kroki, aby utworzyć nową aplikację konsoli w programie Microsoft Visual C# 2005 lub Microsoft Visual C# .NET:
    1. Uruchom program Microsoft Visual Studio 2005 lub Microsoft Visual Studio .NET.
    2. W menu Plik wskaż polecenie Nowy a następnie kliknij pozycję Projekt.
    3. W oknie dialogowym New Project (Nowy projekt) kliknij pozycję Visual C# Projects w polu Project Types (Typy projektu), a następnie kliknij pozycję Console Application( Aplikacja konsoli) w polu Templates (Szablony).

      Uwaga: W programie Visual Studio 2005 kliknij pozycję Visual C# w obszarze Project Types (Typy projektów) okna dialogowego New Project (Nowy projekt), a następnie kliknij pozycję Console Application (Aplikacja konsoli) w obszarze Templates (Szablony).
  2. Upewnij się, że dany projekt zawiera odwołanie do obszaru nazw System.Data, a jeśli go nie zawiera, dodaj takie odwołanie.
  3. Użyj polecenia using w obszarach nazw System oraz System.Data, aby później nie było trzeba kwalifikować deklaracji tych obszarów nazw w kodzie tworzonego programu. Można również dołączyć obiekt System.Data.SqlClient lub System.Data.OleDb, w zależności od tego, który z nich jest używany.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  4. Przed utworzeniem połączenia z bazą danych potrzebny jest ciąg połączenia. Ciągi połączeń zawierają wszystkie informacje potrzebne do nawiązania połączenia z bazą danych, łącznie z nazwą serwera, nazwą bazy danych, identyfikatorem użytkownika i hasłem. Na przykład, następujący ciąg połączenia wskazuje na komputer lokalny, na którym działa serwer SQL Server:

    Dla połączeń typu OleDb:

    Uwaga: Z identyfikatorem użytkownika <UID> muszą być związane odpowiednie uprawnienia do wykonywania tych operacji na bazie danych.
    Provider=SQLOLEDB.1;User ID=<UID>;Initial Catalog=pubs;Data Source=(local)
    						
    W wypadku połączeń SqlClient:
    User ID=<UID>;Initial Catalog=pubs;Data Source=(local)
    						
    Uwaga: Jeśli potrzebujesz dalszej pomocy w określaniu ciągu połączenia dla danej bazy danych, wyszukaj słowo kluczowe „ConnectionString” w bibliotece Microsoft Developer Network (MSDN) dostępnej pod adresem:
    http://search.microsoft.com/search.aspx?mkt=pl&setlang=pl
  5. Program Visual Studio utworzy klasę statyczną i pustą procedurę Main(). W tej procedurze należy zadeklarować zmienną ciągową i przechować odpowiedni ciąg połączenia dla danej bazy danych.

    Uwaga: Z identyfikatorem użytkownika <UID> muszą być związane odpowiednie uprawnienia do wykonywania tych operacji na bazie danych.
    class Class1
    {
    	static void Main(string[] args)
    	{
    		string sConnectionString = 
    "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
    	}
    }
    					
  6. Korzystając z tego ciągu połączenia, utwórz nowy obiekt OleDbConnection lub SqlConnection i wywołaj zawartą w nim metodę Open w celu nawiązania połączenia z bazą danych:
    SqlConnection objConn = new SqlConnection(sConnectionString);
    objConn.Open();
    					
  7. Utwórz obiekt SqlCommand lub OleDbCommand i przekaż do niego polecenie, które ma zostać uruchomione, oraz obiekt połączenia utworzony w poprzednim kroku. W następującym kodzie przykładowym jest przekazywana instrukcja INSERT:
    string sSQL = "INSERT INTO Pracownik " + 
      "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 
      "VALUES ('MSD12923F', 'Jan', 'W', 'Nowak', 10, 82,'0877','2001-01-01')";
    SqlCommand objCmd = new SqlCommand(sSQL,objConn);
    					
  8. Po utworzeniu obiektu SqlCommand lub OleDbCommand można wywołać metodę ExecuteNonQuery w celu uruchomienia reprezentowanego przez nią polecenia. Metoda ExecuteNonQuery została zaprojektowana dla poleceń nie zwracających żadnych wyników (jak instrukcje DELETE, UPDATE i INSERT). Jeśli w trakcie działania instrukcja nie powoduje wyjątku (zobacz kod poniżej), polecenie zostanie z powodzeniem wykonane względem bazy danych.
    objCmd.ExecuteNonQuery();
    					
  9. Zapisz projekt. W menu Debug kliknij polecenie Start, aby uruchomić polecenie w stosunku do bazy danych.

Jak używać parametrów

Podczas uruchamiania poleceń w stosunku do bazy danych (takich jak instrukcje UPDATE, INSERT i DELETE lub wywołania procedur przechowywanych) polecenia te są często opatrzone parametrami. Umożliwia to jednorazowe utworzenie polecenia, a następnie wielokrotne jego wykonywanie z różnymi wartościami wprowadzanymi w miejsce parametrów. Należy porównać odpowiednią instrukcję DELETE z instrukcją INSERT użytą w poprzedniej sekcji:
string sSQL = "DELETE FROM Pracownik WHERE emp_id = @emp_id"
				
Nazwa parametru („@emp_id”) w tej instrukcji DELETE reprezentuje parametr, który można zastąpić różnymi wartościami przy każdym uruchomieniu tego polecenia.

Aby w danym poleceniu użyć parametrów, wykonaj następujące kroki:
  1. Utwórz obiekt OleDbConnection lub SqlConnection, jak w sekcji „Jak uruchomić polecenie”.
  2. Zamień wartości na symbole zastępcze (na przykład „@emp_id” lub „@fname”), aby w tekście polecenia wykorzystać parametry. Dla przykładu zobacz instrukcję DELETE powyżej.
  3. Utwórz obiekt OleDbCommand lub SqlCommand i przekaż mu obiekt połączenia utworzony w kroku pierwszym oraz tekst polecenia zawierający symbole zastępcze parametrów.
  4. Dla każdego w parametrów dodaj obiekt parametru do kolekcji parametrów obiektu polecenia. Dla każdego z parametrów trzeba określić nazwę i typ danych.
    objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
    					
  5. Procedury przechowywane mogą zawierać parametry zwracające wartości oraz parametry wyjściowe. Przed uruchomieniem kwerendy należy także ustawić wartość każdego parametru wejściowego:
    objCmd.Parameters["@emp_id"].Value = "MSD12923F";
    					
  6. Uruchom kwerendę w następujący sposób:
    try
    {
    	objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e) 
    {
    	Console.WriteLine(e.Message);
    }
    Console.WriteLine("Rekord został usunięty");
    					

Pełny kod programu

Uwaga: Przed uruchomieniem tego kodu należy nadać identyfikatorowi użytkownika <UID> prawidłowe wartości. Należy sprawdzić, czy z identyfikatorem użytkownika <UID> są związane uprawnienia umożliwiające przeprowadzenie tej operacji w bazie danych.
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("Naciśnij klawisz Enter, aby kontynuować....");
		Console.ReadLine();
	}

	static void AddRecord()
	{
		string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "INSERT INTO Pracownik " + 
		  "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 
	          "VALUES ('MSD12923F', 'Jan', 'W', 'Nowak', 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("Rekord został dodany");
	}

	static void RemoveRecord()
	{
		string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "DELETE FROM Pracownik 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("Rekord został usunięty");
	}
} 
				

Materiały referencyjne

Więcej informacji na temat korzystania z technologii ADO.NET, poleceń baz danych i procedur przechowywanych można znaleźć w następujących witrynach sieci Web firmy Microsoft:
SQL Server 2000 Stored Procedures (Procedury przechowywane programu SQL Server 2000)
http://msdn2.microsoft.com/en-us/library/aa214299(SQL.80).aspx

„Diving into Data Access”, kolumna MSDN Voices
http://msdn2.microsoft.com/en-us/library/ms810295.aspx

ADO.NET for the ADO Programmer (Omówienie środowiska ADO.NET dla programistów korzystających z obiektów ADO)
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

MSDN Online .NET Developer Center (Centrum online deweloperów .NET w sieci MSDN)
http://msdn.microsoft.com/net
Aby uzyskać więcej informacji, zobacz następujący podręcznik:
John Sharp i Jon Jagger. Microsoft Visual C# .NET Step by Step. Microsoft Press, 2003.
Aby uzyskać więcej informacji, zobacz następujący kurs w witrynie Szkolenia i certyfikacje firmy Microsoft:
2389 Programming with ADO.NET
http://www.microsoft.com/learning/syllabi/en-us/2389Bfinal.mspx

Właściwości

Numer ID artykułu: 306636 - Ostatnia weryfikacja: 17 sierpnia 2007 - Weryfikacja: 4.3
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005
Słowa kluczowe: 
kbhowtomaster kbsqlclient kbsystemdata KB306636

Przekaż opinię

 

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