C# - Adatbázis elérés alapjai

forráskód letöltése
Mostani cikkünkben megnézzük, hogy milyen alapvető lépésekre van szükség, mondjuk egy MS SQL szerver adatbázis eléréséhez és az ott tárolt adatok kiolvasásához.
A megvalósítandó feladat az lesz, hogy a MS SQL szerverhez adott Northwind példaadatbázis Products táblájából kiolvassuk a termékek neveit (ProductName mező) és ezeket felsoroljuk egy ListBox komponensben.
A megoldáshoz szükségünk lesz egy SqlConnection osztályra. Ez egy olyan speciális osztály, mely kifejezetten az MS SQL szerver adatbázis elérését szolgálja. Létrehozunk tehát ebből egy példányt. A konstruktornál kell megadnunk azt a sztringet, melyben le van írva, hogy melyik szerverhez és milyen adatbázishoz szeretnénk kapcsolódni. A program a Szerver nevét, Felhasználó nevét és a Jelszót egy-egy TextBox komponensbe kéri be. Ha ezeket megadtuk, akkor ezek alapján összeállításra kerül a szükséges sztring.
Itt a server paraméterben kell megadnunk annak a számítógépnek nevét, melyen fut az MS SQL szerver. Az uid paraméterbe jön a felhasználói név, míg a pwd-be a jelszó. Végül a database paraméterben adjuk meg az elérni kívánt adatbázist, mely most a Northwind lesz.
    private void button1_Click(object sender, System.EventArgs e)
    {
      SqlConnection connection = new SqlConnection("server=" + textBox1.Text + ";uid=" + textBox2.Text + ";pwd=" + textBox3.Text + ";database=Northwind");
Ha létrejött az objektumunk, akkor az Open függvénnyel megnyithatjuk a kapcsolatot.
           connection.Open();
Szükség van a Products tábla összes rekordjára, de azon belül csak a ProductName mezőre. Ehhez egy SQL lekérdezést futtatunk, hogy megkapjuk az eredményt. SQL lekérdezéshez egy SqlCommand osztályt felhasználva nyílik lehetőségünk. Így ebből is létrehozunk egy példányt, melynek konstruktorában két paramétert kell megadnunk: az első lesz sztringként maga a lekérdezés, másodikként pedig egy SqlConnection osztály példányát kell átadnunk, mely már egy élő, nyitott kapcsolatot tartalmaz.
           SqlCommand command = new SqlCommand("select ProductName from Products", connection);
A lekérdező objektumunk létrehozása után már csak annak futtatására van szükségünk. Futtatni az SqlCommand ExecuteReader függvényének hívásával lehet. Ez visszatérési értékként egy SqlDataReader objektumot vár, melynek segítségével a lekérdezés után ki tudjuk olvasni annak eredményét.
           SqlDataReader reader = command.ExecuteReader();
Most már csak annyi a teendőnk, hogy egy while ciklussal egyesével kiolvassuk a kapott rekordokat. Ehhez az SqlDataReader Read függvénye használható, mely a soron következő rekordot veszi az eredményhalmazból. A ciklusmagban már csak hozzá kell adnunk a ListBox-hoz az egyes rekordokat, melyekhez a GetString függvény segít hozzá bennünket. Itt paraméterként az eredmény halmaz adott oszlopát kell megadnunk. Mivel a lekérdezésünkből következik, hogy az eredménynek csak egy oszlopa van, így ide nyugodtan írhatunk nullát.
      while (reader.Read())
      {
        listBox1.Items.Add(reader.GetString(0)); 
      }
A kiírás után zárjuk a SqlDataReader-t és a SqlConnection-t, mellyel egyúttal a kapcsolatunk is megszakad az SQL adatbázissal.
      reader.Close();   
      connection.Close();    
    }