C# - SQL adatbázis kapcsolat

forráskód letöltése
Múlt heti „Adatbázis elérés alapjai” című cikkünkben bemutattuk, hogy miként érhetünk el adatokat egy SQL szerveren. Mostani cikkben az SQL adatbázis kapcsolatért felelős osztályt vizsgáljuk meg részletesen.
Az SqlConnection osztály vizsgálatához létrehozunk ismét egy kapcsolatot az MS SQL szerver Northwind adatbázisával. Ehhez szintén ismerni kell, hogy melyik számítógépen van az SQL szerver, mi a felhasználó neve és jelszava. Ezeket a példaprogram TextBox komponensein keresztül adhatjuk meg.
A kapcsolatot úgy hozzuk létre, hogy az SqlConnection osztály konstruktorában megadjuk a kapcsolódási sztringet, mely tartalmazza az adatforrás nevét, mely az SQL szerveren telepített példányának a neve, a felhasználói nevet, jelszót, hogy melyik adatbázishoz kapcsolódunk és egy időhatárt, melyen belül a kapcsolatnak létre kell jönnie.
Ezek után az Open függvény hívásával megnyithatjuk az adatbázis kapcsolatot.
SqlConnection connection = new SqlConnection("Data Source="+textBox1.Text+";uid="+textBox2.Text+";password="+textBox3.Text+";initial catalog=Northwind;Connect Timeout=3");
connection.Open();
Az SQL szerver verziója lekérdezhető a ServerVersion property használatával, míg a munkaállomás neve a WorkstationId property-ből tudható meg.
   listBox1.Items.Add("ServerVersion: " + connection.ServerVersion.ToString());        
   listBox1.Items.Add("WorkstationId: " + connection.WorkstationId.ToString());        
A kapcsolódáskor használt sztringet is elérhetjük a ConnectionString property-n keresztül, de rendelkezésünkre állnak DataSource, Database, ConnectionTimeOut nevű property-k, melyekből megtudhatjuk a kapcsolódási sztring egyes elemeinek értékeit.
   listBox1.Items.Add("ConnectionString: " + connection.ConnectionString);
Az adatbázis kapcsolatunk aktuális állapotát a State property értéke árulja el. Ez többféle értéket is tartalmazhat, így egy feltételes vizsgálattal dönthetjük el, hogy az az állapot fenn áll-e amire kíváncsiak vagyunk. Például, az alábbi kóddal eldönthető, hogy a kapcsolat aktív-e?
listBox1.Items.Add("State: " + connection.State.ToString());
if ((connection.State & ConnectionState.Open) == ConnectionState.Open)
{
listBox1.Items.Add("Opened");
}
A State property ConnectionState felsorolt típusú elemekből tevődhet össze. Ez az alábbiak kombinációi lehetnek:
Érték Megnevezés
Open a kapcsolat nyitott
Closed a kapcsolat lezárt
Broken a kapcsolat nyitott, de nem használható, megszakadt
Connecting kapcsolódási kísérlet folyamatban
Executing parancs futtatás folyamatban
Fetching adat visszaszerzés folyamatban
InTransaction a kapcsolat aktuálisan egy tranzakcióban van