SqlDataReader-2
Merhaba arkadaşlar. Bir önceki makalede SqlDataReader sınıfına kısaca değinerek, bir de uygulama yapmıştık. Bu uygulamımızda da SqlCommand sınıfına ait ExecuteReader ı ve almış olduğu CommandBehavior.CloseConnection a örnek vereceğiz. SqlDataReader nesnemiz Close metodu ile kapatılırken, ilgili SqlConnection nesneside otomatik olarak kapatılır. Böylece sistem kaynaklarının gereksiz yere kullanılması önlenmiş olur.
Örneğimizde; Üretim kategorilerini DropDownList imizde, Seçilen kategorideki ürünleri listbox ta ve bu ürüne ait detaylı açıklamalarıda yine ikinci bir listbox ta göstereceğiz. (Şekil 1)
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
public partial class _Default : System.Web.UI.Page
{
SqlConnection baglan;
SqlCommand komut;
protected void Page_Load(object sender, EventArgs e)
{
baglan = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Products.mdf;Integrated Security=True;User Instance=True");
//Distinct ile Kategori sütununda tekrarlananan isimleri,
//bir kez alır.
komut = new SqlCommand("Select Distinct Kategori From Uretim Order By Kategori",baglan);
SqlDataReader drKategori;
baglan.Open();
drKategori = komut.ExecuteReader(CommandBehavior.CloseConnection);
while (drKategori.Read())
{
//While döngüsü ile satırları tek tek belleğe alıyoruz.
//0 indeksli alana ait değeri GetString metoduyla alıp, ListBox a ekliyoruz.
dListKategori.Items.Add(drKategori.GetString(0));
}
//Sqldatareader nesnemizi kapatıyoruz.
drKategori.Close();
baglan.Close();
}
protected void btnUrun_Click(object sender, EventArgs e)
{
string kategori = dListKategori.SelectedItem.ToString();
baglan = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Products.mdf;Integrated Security=True;User Instance=True");
komut = new SqlCommand("Select Distinct id,Üretim_Ad,Firma,Miktar,Fiyat,Stok From Uretim Where Kategori='" + kategori + "' Order By Üretim_Ad ", baglan);
SqlDataReader drProduct;
baglan.Open();
drProduct = komut.ExecuteReader(CommandBehavior.CloseConnection);
int UrunSayisi = 0;
lstProduct.Items.Clear();
while (drProduct.Read())
{
//Üretim adlarını listbox a ekliyoruz.
lstProduct.Items.Add(drProduct.GetString(1));
//Seçilen kategori altındaki ürün sayısını alıyoruz.
UrunSayisi += 1;
}
drProduct.Close();
baglan.Close();
Label2.Text = "Urun Sayısı: " + UrunSayisi.ToString();
}
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string adi = lstProduct.SelectedItem.ToString();
baglan = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Products.mdf;Integrated Security=True;User Instance=True");
komut = new SqlCommand("Select Distinct * From Uretim Where Üretim_Ad='" + adi + "' Order By Üretim_Ad ", baglan);
SqlDataReader drUrunDetay;
baglan.Open();
drUrunDetay = komut.ExecuteReader(CommandBehavior.CloseConnection);
int liste = 0;
lstUrunDetay.Items.Clear();
while (drUrunDetay.Read())
{
for (int i = 0; i < drUrunDetay.FieldCount; i++)
{
//Seçili satırdaki tüm alanları listbox a ekliyoruz.
lstUrunDetay.Items.Add(drUrunDetay[i].ToString());
liste += 1;
}
}
drUrunDetay.Close();
baglan.Close();
Label3.Text = "Sayı: " + liste.ToString();
}
}
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Products Kategori"></asp:Label>
<br />
<asp:DropDownList ID="dListKategori" runat="server">
</asp:DropDownList>
<asp:Button ID="btnUrun" runat="server" Text="Ürünler"
onclick="btnUrun_Click" />
<br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
<br />
<asp:ListBox ID="lstProduct" runat="server" Height="171px"
onselectedindexchanged="ListBox1_SelectedIndexChanged" Width="190px"></asp:ListBox>
<asp:ListBox ID="lstUrunDetay" runat="server" Height="166px" Width="194px"></asp:ListBox>
</div>
</form>
</body>
</html>
Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek dileğiyle. Hoşçakalın. Bahadır ŞAHİN