Bu yazımız başlığından da
anlayacağınız üzere bir "uygulama" konusunu içeriyor. Nedir
konumuz:"Stored Procedure'lar İle Çalışmak". O halde derhal
uygulamaya geçmekte fayda var. İlk etapta sql server da yeni bir
tablo yaratacağız. Tablomuzun içeriği otomobiller üzerine olacak. Ve
bazı otomobil marka ve modellerinin fiyat,yaş,renk,marka ve model
bilgilerini içerecek. Daha sonra bir web formda listbox yardımıyla
araçların modellerini listeleyecek ve üzerine tıklanan araca ait
detay bilgilerin datagrid üzerinde gösterilmesini sağlayacağız. Tabi
bu işlemi bir stored procedure yardımıyla yapacağız.
Tablo dizaynımızı yapıyoruz.

Tablomuza ait örnek verileri oluşturuyoruz.

Şimdi sıra kullanacağımızı stored procedure'ü yazmaya geldi.

Buraya kadar olan kısım işin veritabanı ile ilgili olan kısmıydı.
Henüz stored procedure haricinde herhangi bir kod yazmadık. Şimdi VS
2003 te yeni bir C# Web Application oluşturup tüm bu yaptıklarımızı
kullanma zamanı geldi.
Formumuza bir listbox ve bir datagrid nesnesi ekliyoruz. Ve tasarımı
aşağıdakine benzer bir hal alıyor.

Databse ve form tasarımımızı bitirdiğimize göre sırada işin heyecanlı
tarafı yani kod yazma bölümü var. İlk etapta sayfa yüklenirken neler
olmasını istediğimizi yazmakla başlayalım. Neler olabilir mesela; sql
server da yarattığımız tablomuza bağlanıp sadece ID ve model
alanlarını alacak bir kod bloğu yazmak ile başlayalım.
SqlConnection baglanti=new
SqlConnection("initial catalog=otomobil;Data Source=localhost;User
ID=sa;Password=123");
private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack==false)
{
SqlCommand MyCommand=new SqlCommand("Select id,marka From TBLOTOMOBIL
Order By Marka",baglanti);
MyCommand.CommandType=CommandType.Text;
SqlDataReader MyReader;
baglanti.Open();
MyReader=MyCommand.ExecuteReader(CommandBehavior.CloseConnection);
ListBox1.DataSource=MyReader;
ListBox1.DataTextField="marka";
ListBox1.DataValueField="id";
ListBox1.DataBind();
MyReader.Close();
}
}
Bu kod bloğu ile yaptıklarımıza kısaca bir göz atalım:
SqlConnection baglanti=new
SqlConnection("initial catalog=otomobil;Data Source=localhost;User
ID=sa;Password=123");
/*SQL Server Bağlantı Stringimiz*/
SqlCommand MyCommand=new SqlCommand("Select id,marka From TBLOTOMOBIL
Order By Marka",baglanti);
/*Sql Command nesnemizi oluşturduk ve Sql
cümlemiz hazır*/
MyCommand.CommandType=CommandType.Text;
/*Sql Command
nesnemizin hangi tipte kaynaktan veri alacağını belirtiyoruz.*/
SqlDataReader MyReader;
baglanti.Open();
/*SqlDataReader nesnemizi oluşturuyor ve
bağlantıyı açıyoruz*/
ListBox1.DataSource=MyReader;
/*ListBox ımızın DataSource ünü SqlDataReader
olarak belirliyoruz*/
ListBox1.DataTextField="marka";
ListBox1.DataValueField="id";
/*ListBox umuzun index verilerini
tanımlıyoruz*/
ListBox1.DataBind();
MyReader.Close();
/*Verilerimizi Listbox umuza aktarıyor ve
Reader ımızı kapatıyoruz*/
Şimdi sıra geldi ListBox dan bir
item seçildiğinde DataGrid üzerinde bu item ın detaylarını
göstermeye. Aslında konumuz asıl olarak burada başlıyor. Yani Stored
Procedure den veri okuma kısmımız.
private void ListBox1_SelectedIndexChanged(object sender,
System.EventArgs e)
{
SqlCommand otomobildetay=new SqlCommand("otomobil",baglanti);
otomobildetay.CommandType=CommandType.StoredProcedure;
otomobildetay.Parameters.Add("@otoid",SqlDbType.Int);
otomobildetay.Parameters[0].Value=ListBox1.SelectedValue;
SqlDataReader MyReader;
baglanti.Open();
MyReader=otomobildetay.ExecuteReader(CommandBehavior.CloseConnection);
MyDataGrid.DataSource=MyReader;
MyDataGrid.DataBind();
MyReader.Close();
}
Şimdide burada yazdığımız kodları kısaca gözden geçirelim.
SqlCommand otomobildetay=new
SqlCommand("otomobil",baglanti);
/*Sql Command nesnemizi tanımladık ve
parametrelerine database bağlantımızı ve yazımızın başında
oluşturduğumuz stored procedure nin ismini yazdık.*/
otomobildetay.CommandType=CommandType.StoredProcedure;
/*Command
nesnemizin type ını Stored Procedure olarak verdik*/
otomobildetay.Parameters.Add("@otoid",SqlDbType.Int);
/*Hazırladığımız
stored procedure de kullanacağımız parametreyi ve veri tipini
belirttik*/
otomobildetay.Parameters[0].Value=ListBox1.SelectedValue;
/*Bir
önceki satırda belirttiğimiz parametrenin ListBox1 in selected item
ından geleceğini belirttik*/
SqlDataReader MyReader;
baglanti.Open();
/*SqlDataReader nesnemizi tanımladık ve
bağlantımızı açtık*/
MyDataGrid.DataSource=MyReader;
/*DataGrid imizin datasource ünü MyReader
olarak tanımladık*/
MyDataGrid.DataBind();
MyReader.Close();
/*DataGrid imze
verileri bağladık ve SqlDataReader ımızı kapattık*/ |