
A példaprogram futtatása előtt a mellékelt ResetIdentity.sql állományban lévő tárolt eljárást futtassa le az sql-ben, annak érdekében, hogy létrejöjjön a példához szükséges adatbázis a szükséges tartalommal.
A Form1.cs forráskód 23. sorában lévő connStr változót módosítsa annak érdekében, hogy az imént létrehozott példa adatbázis elérhetővé váljon.
A megoldáshoz a DBCC sql parancsot kell használnunk, melynek CHECKIDENT utasítása elvégzi a megadott tábla identity típusú oszlopainak ellenőrzését, hogy a sorok értékei megfelelőek-e. Ugyanez az utasítás képes arra is, hogy az adott táblához tartozó identity számlálót tetszőleges értékre állítsa. Ez utóbbihoz első paraméterként a tábla nevét, másodikként a RESEED kulcsszót kell megadnunk, mely arra utasítja az sql-t hogy a számláló értékét meg kell változtatni. Harmadik paraméterként azt a számot kell megadnunk, amely az identity számláló új értéke lesz. Figyeljünk arra, hogy ha itt például nullát adunk meg, akkor a következő sor beszúrásánál az identity típusú oszlop értéke 1 lesz.
A mellékelt példában a művelet elvégzésére létrehoztunk egy tárolt eljárást ResetIdentity néven.
CREATE PROCEDURE ResetIdentity AS
DBCC CHECKIDENT (Table1, RESEED, 0)
GO
A példaprogramban ezek után nincs más teendőnk, mint létrehoznunk két funkciót, mely beszúr egy-két sort e táblába, valamint egy olyan funkciót, mely meghívja a fenti tárolt eljárást. Ezek felhasználásával már tesztelni tudjuk a tárolt eljárás működését.
Az első nyomógombra történő kattintáskor három új sor szúrunk be a táblába, majd a tábla teljes tartalmát megjelenítjük egy DataGrid-ben, melyhez meghívjuk az UpdateGrid nevű függvényünket.
private void button1_Click(object sender, System.EventArgs e)
{
connection.Open();
SqlCommand c = new SqlCommand("insert into Table1 (Txt) VALUES (@txtvalue)", connection);
c.Parameters.Add("@txtvalue", SqlDbType.VarChar, 50);
c.Parameters[0].Value = "a";
c.ExecuteNonQuery();
c.Parameters[0].Value = "b";
c.ExecuteNonQuery();
c.Parameters[0].Value = "c";
c.ExecuteNonQuery();
UpdateGrid();
connection.Close();
}
Második nyomógomb lenyomásakor hívjuk meg a ResetIdentity tárolt eljárásunkat, mely lenullázza az identity számlálóját. Ha ezt követően ismét az első nyomógombra kattintunk, akkor jól megfigyelhető lesz az új soroknál, hogy a tábla első oszlopában a számozás ismét az elejéről indul.
private void button2_Click(object sender, System.EventArgs e)
{
connection.Open();
SqlCommand c = new SqlCommand("ResetIdentity", connection);
c.CommandType = CommandType.StoredProcedure;
c.ExecuteNonQuery();
UpdateGrid();
connection.Close();
}
Az UpdateGrid függvény egy egyszerű select lekérdezést futtat a táblára, majd ennek eredményét megjeleníti a DataGrid-ben.
private void UpdateGrid()
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("select * from Table1", connection);
da.Fill(ds);
dataGrid1.DataSource = ds.Tables[0].DefaultView;
}