HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

SQL szerver tárolt eljárásának paraméterezett hívása


Példaprogram letöltése

8487 bájt

Ebben a cikkünkben azt vizsgáljuk, hogy egy SQL szerver adatbázisában lévő tárolt eljárást miként tudunk meghívni és ennek az eljárásnak paramétereket átadni, valamint a szolgáltatott eredményt megjeleníteni.

A mellékelt példához a MS SQL szerver Northwind példa adatbázisát használjuk fel és az ebben található Sales by Year nevű tárolt eljárást futtatjuk, mely két paramétert vár két dátum típusban. A tárolt eljárás e két dátum közötti megrendeléseket fogja listázni.
A hívásához először létre kell hoznunk a kapcsolatot az adatbázissal, melyhez egy SqlConnection osztályt használunk fel. Itt paraméterként meg kell adnunk az adatforrást, felhasználói nevet. Szükséges még megadnunk a felhasználói nevet, jelszót, valamint hogy melyik adatbázishoz szeretnénk kapcsolódni. Ezek után az Open függvény hívásával megnyithatjuk a kapcsolatot.
      protected void button1_Click (object sender, System.EventArgs e)
      {
      SqlConnection connection = new SqlConnection("Data Source="+textBox1.Text+";uid="+textBox2.Text+";password="+textBox3.Text+";initial catalog=Northwind;Connect Timeout=3");
      connection.Open();  
Egy tárolt eljárás aktivizálásához használhatjuk az SqlCommand osztályt. A konstruktorának első paramétereként megadjuk a futtatandó tárolt eljárás nevét, míg másodikként a már élő kapcsolatot, vagyis az SqlConnection osztályból létrehozott példányt.
A megadandó parancs típusát StoredProcedure-re kell választanunk a CommandType property-ben.
      SqlCommand command = new SqlCommand("Sales by Year", connection);
      command.CommandType = CommandType.StoredProcedure;
Amennyiben a használt tárolt eljárásnak paraméterei is vannak, akkor ehhez létre kell hoznunk egy SqlParameter típusú osztályt, melyben a paraméterhez kapcsolódó adatok megadhatók. Rögtön az osztály konstruktoránál kell sztringként megadnunk a paraméter nevét, valamint annak típusát, mely a mi esetünkben most DateTime lesz. Következő lépésként a Value property felhasználásával a paraméter aktuális értékét kell megadni, mely ez esetben szintén DateTime típus kell, hogy legyen. Végső lépésként az SQLCommand osztály Parameters property Add függvényének hívásával hozzáadhatjuk a soron következő paramétert, melyet az imént hoztunk létre SQLParameter osztályból.
      SqlParameter p1 = new SqlParameter("@Beginning_Date", SqlDbType.DateTime);
      p1.Value = new DateTime(1996, 8, 1);
      command.Parameters.Add(p1);  
Ezzel az előkészületi lépések meg is voltak, most már csak az SqlCommand osztály ExecuteReader függvényének hívása marad hátra a tárolt eljárás futtatásához. Ehhez viszont szükségünk lesz még egy osztályra, az SqlDataReader-re mivel ilyen típusú lesz a függvény visszatérési értéke.
      SqlDataReader result = command.ExecuteReader();  
Miután az ExecuteReader lefutott, már csak az adatok megjelenítése marad hátra, melyhez most egy ListView komponenst használunk fel. Az SqlDataReader osztály Read függvényét meghívva, mindig az eredmény halmaz soron következő rekordját olvashatjuk ki. Mindezt egy while ciklusba téve megoldható, hogy az első rekordtól az utolsóig az összes adat kiolvasható, mivel a Read függvény visszatérési értéke mindaddig igaz lesz, amíg van kiolvasható rekord. A GetValue függvényt használhatjuk az aktuális sor egyes mezőinek kiolvasására. Itt paraméterként a mező sorszámát adhatjuk meg.
      String[] s = new String[4];           
      while (result.Read())
      {
        s[0] = result.GetValue(0).ToString();
        s[1] = result.GetValue(1).ToString();
        s[2] = result.GetValue(2).ToString();
        s[3] = result.GetValue(3).ToString();
        listView1.Items.Add(new ListViewItem(s));          
      }  
Az adatok kiírása után már csak a megnyitott kapcsolatok lezárása van hátra.
        result.Close();
        connection.Close();
      }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2001 évkönyv 112. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |