Yazı Font Küçült Yazı Font Büyült

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)

 

Resim1

Şekil 1

 

 

Resim2

Şekil 2

 

 

Resim3

Şekil 3

 

 

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>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

        <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>

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

        <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