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();
}