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:
- Wykonaj następujące kroki, aby utworzyć nową aplikację konsoli w programie Microsoft Visual C# 2005 lub Microsoft Visual C# .NET:
- Uruchom program Microsoft Visual Studio 2005 lub Microsoft Visual Studio .NET.
- W menu Plik wskaż polecenie Nowy a następnie kliknij pozycję Projekt.
- 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).
- Upewnij się, że dany projekt zawiera odwołanie do obszaru nazw System.Data, a jeśli go nie zawiera, dodaj takie odwołanie.
- 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;
- 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: - 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)";
}
}
- 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();
- 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);
- 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();
- 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:
- Utwórz obiekt OleDbConnection lub SqlConnection, jak w sekcji „Jak uruchomić polecenie”.
- 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.
- 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.
- 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);
- 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";
- 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");
}
}
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:
Aby uzyskać więcej informacji, zobacz następujący podręcznik:
Aby uzyskać więcej informacji, zobacz następujący kurs w witrynie Szkolenia i certyfikacje firmy Microsoft:
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
| kbhowtomaster kbsqlclient kbsystemdata KB306636 |