none
[Yardım] ID numarasına göre veri tabanından veri çekme RRS feed

  • Soru

  • Merhaba, benim işin içinden bir türlü çıkamadığım bir durum var. Değerli yardımlarınıza ihtiyacım var. Ben bir sayfa oluşturdum. Sayfa adı cesitli-dillerde-tercumanlar.aspx Buraya veri tabanından verileri çekiyorum

    KODU OLUŞTURUYORUM:

    OleDbConnection baglantix = new OleDbConnection();
            baglantix.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb");
            baglantix.Open();
            OleDbCommand cmdListele = new OleDbCommand();
            cmdListele.Connection = baglantix;
            cmdListele.CommandText = ("Select top 20 TercumanlarId,AdSoyad,Dil,Bayrak,Imaj from TB_tercumanlar");
            dlZiyaret.DataSource = cmdListele.ExecuteReader();
            dlZiyaret.DataBind();
            cmdListele.Dispose();
            baglantix.Close();

    DATA LISTE DOLDURUYORUM

    <asp:DataList ID="dlZiyaret" runat="server" BackColor="White" BorderColor="#CCCCCC"
                        BorderStyle="None" BorderWidth="1px" CellPadding="4" GridLines="Horizontal" Width="560px"
                        ForeColor="Black" RepeatColumns="3">
                        <FooterStyle BackColor="#CCCC99" ForeColor="Black" />
                        <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
                        <ItemTemplate>
                            <div class="Leftimages">
                                <asp:Image ID="Image1" ImageUrl='<%#Eval("Bayrak") %>' runat="server" /></div>
                            <br />
                            <br />
                            <div class="Leftimages">
                            <a href="tercumanlar.aspx?TercumanId=<%#Eval("TercumanlarId") %>">
                                <asp:Image ID="Image2" ImageUrl='<%#Eval("Imaj") %>' runat="server" /></div>
                            </a>
                            <br />
                            <br />
                            <strong>Tercüman:</strong>
                            <div>
                                <%#Eval("AdSoyad")%></div>
                            <div>
                            </div>
                            <br />
                            <strong>Dil</strong>
                            <div>
                                <%#Eval("Dil")%></div>
                        </ItemTemplate>
                        <SelectedItemStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
                    </asp:DataList>

    Burada sorun yok.

    Asıl önemli olan ilgili veriye tıklayınca ID değerine göre cesitli-dillerde-tercumanlar.aspx sayfasında hangi veriye tıkladıysam,  tercumanlar.aspx sayfasında o ID'yi çağırması gerek ama sürekli aynı Değeri döndürüyor. Yani ben 3 nolu id değerine sahip veriye tıklarsam ona ulaşmam lazım tercumanlar.aspx sayfasında. Bunu nasıl yapabilirim?

    Kod bu. Burada takıldım kaldım.

            OleDbConnection baglantii = new OleDbConnection();
            baglantii.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb");
            baglantii.Open();
            OleDbCommand cmdListelee = new OleDbCommand();
            cmdListelee.Connection = baglantii;
            cmdListelee.CommandText = ("Select TercumanlarId,AdSoyad,Dil,Detay,Imaj from TB_tercumanlar");
             cmdListelee.Parameters.AddWithValue("@TercumanlarId", Request.QueryString["TercumanlarId"]);
            OleDbDataReader rd = cmdListelee.ExecuteReader();
            while (rd.Read())
            {
                ltrTercumanNo.Text = rd[0].ToString();
                ltrTercumanAd.Text = rd[1].ToString();
                ltrDil.Text = rd[2].ToString();
                ltrHakkinda.Text = rd[3].ToString();
                ImageTercuman.ImageUrl = rd[4].ToString();

            }
            cmdListelee.Dispose();
            baglantii.Close();

    --------------------
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
        <p>
            <asp:Image ID="ImageTercuman" runat="server" ImageUrl="~/images/User128.png" />
            <br />
            <span class="RedColor">Tercüman No:</span><asp:Literal ID="ltrTercumanNo" runat="server"></asp:Literal><br />
            <span class="RedColor">Tercüman:</span><asp:Literal ID="ltrTercumanAd" runat="server"></asp:Literal><br />
            <span class="RedColor">Dil:</span><asp:Literal ID="ltrDil" runat="server"></asp:Literal><br />
            <span class="RedColor">Tercüman Hakkında:</span><asp:Literal ID="ltrHakkinda" runat="server"></asp:Literal><br />
        </p>
    </asp:Content>
    7 Ağustos 2014 Perşembe 18:25

Yanıtlar

  • OleDbConnection baglantii = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb"));
    
    OleDbCommand cmdListelee = new OleDbCommand("Select AdSoyad,Dil,Detay,Imaj from TB_tercumanlar where TercumanlarId=@TercumanlarId",baglantii);
    
    cmdListelee.Parameter.AddWithValue("@TercumanlarId", Convert.ToInt16(Request.QueryString["TercumanlarId"]);
    
    OleDbDataAdapter adapter=new OleDbDataAdapter(cmdListelee);
    DataTable tablo=new DataTable();
    adapter.Fill(tablo);
    
    Repeater1.DataSource=tablo;
    Repeater1.DataBind();
          
       
    Datayı repater a bağlamalısınız.

    Mail Gönder


    • Düzenleyen Soner KOYLU 7 Ağustos 2014 Perşembe 21:00
    • Yanıt Olarak İşaretleyen Fırat Boyan 7 Ağustos 2014 Perşembe 21:51
    7 Ağustos 2014 Perşembe 20:59

Tüm Yanıtlar

  • int TercumanlarId=convert.toint16(request.querystring["TercumanlarId"]);
    
    yazıp where koşuluna TercumanlarId yazıcaksın

    7 Ağustos 2014 Perşembe 19:05
  • Merhaba,

    Söylediğiniz gibi şu şekilde düzeltme yaptım. Umarım yanlış yapmamışımdır. Yine aynı sonucu alıyorum. Kayıtlarda (ID'leri 1,2,3,4,5 şeklinde sıralı) 5 tane veri var Sürekli 5 numaralı ID değerini döndürüyor. 

     OleDbConnection baglantii = new OleDbConnection();
            baglantii.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb");
            baglantii.Open();
            OleDbCommand cmdListelee = new OleDbCommand();
            cmdListelee.Connection = baglantii;
            cmdListelee.CommandText = ("Select TercumanlarId,AdSoyad,Dil,Detay,Imaj from TB_tercumanlar where TercumanlarId=TercumanlarId");
            int TercumanlarId = Convert.ToInt16(Request.QueryString["TercumanlarId"]);
            OleDbDataReader rd = cmdListelee.ExecuteReader();
            while (rd.Read())
            {
                ltrTercumanNo.Text = rd[0].ToString();
                ltrTercumanAd.Text = rd[1].ToString();
                ltrDil.Text = rd[2].ToString();
                ltrHakkinda.Text = rd[3].ToString();
                ImageTercuman.ImageUrl = rd[4].ToString();

            }
            cmdListelee.Dispose();
            baglantii.Close();

    Daha sonra da Select sorgusundan TercumanlarId kaldırayım nasılsa  QueryString'den çekiyorum öyle deneyeyim dedim ama olmuyor bir türlü. Sonuç hep aynı. Konuyu açarken de bahsettiğim gibi cesitli-dillerde-tercumanlar.aspx sayfasında hangi veriye tıklarsam tercumanlar.aspx sayfasında o ID'yi çağırması gerek ama sürekli ID'si 5 olan Değeri döndürüyor.

     OleDbConnection baglantii = new OleDbConnection();
            baglantii.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb");
            baglantii.Open();
            OleDbCommand cmdListelee = new OleDbCommand();
            cmdListelee.Connection = baglantii;
            cmdListelee.CommandText = ("Select AdSoyad,Dil,Detay,Imaj from TB_tercumanlar where TercumanlarId=TercumanlarId");
            int TercumanlarId = Convert.ToInt16(Request.QueryString["TercumanlarId"]);
            OleDbDataReader rd = cmdListelee.ExecuteReader();
            while (rd.Read())
            {
              
                ltrTercumanAd.Text = rd["AdSoyad"].ToString();
                ltrDil.Text = rd["Dil"].ToString();
                ltrHakkinda.Text = rd["Detay"].ToString();
                ImageTercuman.ImageUrl = rd["Imaj"].ToString();

            }
            cmdListelee.Dispose();
            baglantii.Close();

    Bir noktada hata yaptıysam affedin. Değerli yardımlarınızı rica ediyorum.



    7 Ağustos 2014 Perşembe 20:00
  • Tabi en sonuncuyu alır. While ile döngü kuruyorsunuz. Sonuncu nesne 5 numaralı id olduğu için onu alıyor. if derseniz de hep 1 nolu id yi alır. Repater nesnesi kullanmalısınız.

    Burada örnekler var.


    Mail Gönder


    • Düzenleyen Soner KOYLU 7 Ağustos 2014 Perşembe 20:42
    7 Ağustos 2014 Perşembe 20:42
  • Tabi en sonuncuyu alır. While ile döngü kuruyorsunuz. Sonuncu nesne 5 numaralı id olduğu için onu alıyor. if derseniz de hep 1 nolu id yi alır. Repater nesnesi kullanmalısınız.





    Soner Bey öncelikle ilginiz için çok teşekkür ederim. Şu şekilde yaptım ancak bu seferde bütün veriler dökülüyor :) Ben tek bir ID'nin verisini çekmek istediğim için Literal kullanmıştım.

    <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                    <div class="Leftimages">
                        <asp:Image ID="Image2" ImageUrl='<%#Eval("Imaj") %>' runat="server" /></div>
                    <br />
                    <br />
                    <strong>Ad Soyad:</strong>
                    <div>
                        <%#Eval("AdSoyad")%></div>
                    <div>
                    </div>
                    <br />
                    <strong>Hakkında:</strong>
                    <div>
                        <%#Eval("Detay")%></div>
                </ItemTemplate>
            </asp:Repeater>

    -----------------------------

     OleDbConnection baglantii = new OleDbConnection();
            baglantii.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb");
            baglantii.Open();
            OleDbCommand cmdListelee = new OleDbCommand();
            cmdListelee.Connection = baglantii;
            cmdListelee.CommandText = ("Select AdSoyad,Dil,Detay,Imaj from TB_tercumanlar where TercumanlarId=TercumanlarId");
            int TercumanlarId = Convert.ToInt16(Request.QueryString["TercumanlarId"]);
            OleDbDataReader rd = cmdListelee.ExecuteReader();

            Repeater1.DataSource = rd;
            Repeater1.DataBind();

            cmdListelee.Dispose();
            baglantii.Close();



    7 Ağustos 2014 Perşembe 20:53
  • OleDbConnection baglantii = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb"));
    
    OleDbCommand cmdListelee = new OleDbCommand("Select AdSoyad,Dil,Detay,Imaj from TB_tercumanlar where TercumanlarId=@TercumanlarId",baglantii);
    
    cmdListelee.Parameter.AddWithValue("@TercumanlarId", Convert.ToInt16(Request.QueryString["TercumanlarId"]);
    
    OleDbDataAdapter adapter=new OleDbDataAdapter(cmdListelee);
    DataTable tablo=new DataTable();
    adapter.Fill(tablo);
    
    Repeater1.DataSource=tablo;
    Repeater1.DataBind();
          
       
    Datayı repater a bağlamalısınız.

    Mail Gönder


    • Düzenleyen Soner KOYLU 7 Ağustos 2014 Perşembe 21:00
    • Yanıt Olarak İşaretleyen Fırat Boyan 7 Ağustos 2014 Perşembe 21:51
    7 Ağustos 2014 Perşembe 20:59
  • OleDbConnection baglantii = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb"));
    
    OleDbCommand cmdListelee = new OleDbCommand("Select AdSoyad,Dil,Detay,Imaj from TB_tercumanlar where TercumanlarId=@TercumanlarId",baglantii);
    
    cmdListelee.Parameter.AddWithValue("@TercumanlarId", Convert.ToInt16(Request.QueryString["TercumanlarId"]);
    
    OleDbDataAdapter adapter=new OleDbDataAdapter(cmdListelee);
    DataTable tablo=new DataTable();
    adapter.Fill(tablo);
    
    Repeater1.DataSource=tablo;
    Repeater1.DataBind();
          
       
    Datayı repater a bağlamalısınız.


    Soner Bey çok özür dilerim ama sizin kadar uzman değilim kodu şu şekilde yazdım

    OleDbConnection baglantii = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/tercume.accdb"));
    OleDbCommand cmdListelee = new OleDbCommand("Select AdSoyad,Dil,Detay,Imaj from TB_tercumanlar where TercumanlarId=@TercumanlarId",baglantii);
    cmdListelee.Parameters.AddWithValue("@TercumanlarId", Convert.ToInt16(Request.QueryString["TercumanlarId"]));
    OleDbDataAdapter adapter=new OleDbDataAdapter(cmdListelee);
    DataTable tablo=new DataTable();
    adapter.Fill(tablo);

    Repeater1.DataSource=tablo;
    Repeater1.DataBind();

    Sonuç yine boş geliyor Data'yı nerede bağlamam gerekiyor repeater'a ?

    7 Ağustos 2014 Perşembe 21:06
  • Mail atın bakalım.

    Mail Gönder

    7 Ağustos 2014 Perşembe 21:11
  • Mail atın bakalım.


    Attım Soner Bey.
    7 Ağustos 2014 Perşembe 21:14
  • Mail atın bakalım.



    Attım Soner Bey.

    Soner Bey, 

    Değerli yardımlarınız için çok ama çok teşekkür ederim. Sorunum sayenizde çözüldü :)

    7 Ağustos 2014 Perşembe 21:50