VERİTABANI NEDİR? 1 Bir veritabanı isminden de anlaşılacağı gibi bilgilerin depolandığı hiyerarşik bir yapıdır. Başka bir tanımıyla dijital ortamda(bilgisayar) saklanan düzenli verilerdir de denilebilir. ADO.NET Web üzerinden veritabanına bağlanmak ve veri işlemleri gerçekleştirmek için ADO.NET teknolojinden faydalanarak işlemlerimizi gerçekleştireceğiz. ADO.NET(Activex Data Object) tamamıyla yeniden geliştirilen yapısı ile verilere ulaşır. ADO.NET verilere erişirken eski ADO gibi sadece OLEDBProvider değil, onun ışında SQLProvider yapısını da kullanır. ADO.NET veri geçişlerinde XML yapısına tam uyumlu olduğundan sağlam ve performansı yüksek, her ortama uyumludur..net Platformunu yüklediğimizde sahip olduğumuz Provider lar Odbc,Oledb,SqlClient gelmektedir. Fakat Oracle veritabanınıza bağlanmak istiyorsanız www.oracle.com adresinden OPD.NET i indirmeniz gerekmektedir. VERİTABANINA BAĞLANTI Bir web formu üzerinden veritabanına bağlantımızı anlatacağım. UYGULAMA1 Bu uygulamamızda MS Access de hazırlamanız gereken veritabanı örneği aşağıda yer almaktadır. Örneğimizde GelismisSorgular adında bir database(veritabanı),bunun içerisinde de Musteriler adında bir tablomuz yer almaktadır. Veritabanımızı yaptıktan sonra içerisine bilgiler giriniz. 1) Web sayfamıza birer GridView ve Button nesnelerimizi ekleyelim. 2) Butonu çift tıklayarak kod alanına geçelim. Access veritabanı üzerinde işlem yapabilmemiz için aşağıdaki sınıfları projemizde tanımlıyoruz using System.Data; using System.Data.OleDb; Buton1_Click olayına aşağıdaki kodumuzu yazalım. protected void Button1_Click(object sender, EventArgs e) string yol=@"provider=microsoft.ace.oledb.12.0;data Source= DataDirectory \gelismissorgular.mdb"; OleDbConnection baglan=new OleDbConnection(yol); OleDbCommandsorgu = new OleDbCommand("select * from musteriler",baglan); OleDbDataAdapteradp = new OleDbDataAdapter(sorgu); DataSet ds = new DataSet();
adp.fill(ds); 2 this.gridview1.datasource = ds.tables[0]; this.gridview1.databind(); 3) Kodumuzu çalıştırmadan önce biraz anlatalım. Bir veritabanından bilgi almak için bazı kurallarımız söz konusudur. Birincisi veritabanımızla bağlantı kurmaktır. Bağlantımızı OleDbConnection sınıfı ile gerçekleştiriyoruz. Sınıfımızın aldığı parametrede ise; DataSource: Veritabanımızın ismini ve/veya kurulu olduğu bilgisayarımızın IP sini yazmamız gerekmektedir. DataSource=veritabani.mdb DataSource=klasör\\veritabani.mdb DataSource=192.168.1.100\\veritabani.mdb Provider: Access e veya diğer veritabanlarına bağlanmak için kullanılacak sağlayıcı seçimi için kullanılır. İkinci aşamada OleDbDataAdapter kısmı SQL sorgularımızı yorumlaması gereken bir sınıf olarak değerlendirebiliriz. Böylece SELECT sorgusu yorumlanıyor ve sonuç Dataset e aktarılarak sanal bir tablonun oluşturulması sağlanmaktadır. Artık DataSet i GridView e aktararak sonuçların görüntülenmesi sağlanacaktır. 4) Artık kodumuzu çalıştırarak butonumuza bastığımızda karşımıza verilerimiz gelecektir. Datalarımızı getirdikten sonra, veritabanımıza kayıt eklemek çıkartmak gibi SQL sorgularla işlemlerimizi geçekleştirebiliriz. Not: Access 2003 öncesi sürümlerde veritabanına bağlanmak için Provider satırı farklıdır. stringbaglan= Provider=Microsoft.Jet.Oledb.4.0;Data Source=c:\\veritabani.mdb ; şeklinde yazılmalıdır.
UYGULAMA2 1) Bu uygulamamızda Web sitemize dört TextBox, dört Button ve bir tane de GridView yerleştirelim. 3 2) Aşağıdaki kodu yazdıktan sonra çalıştıralım using System.Data; using System.Data.OleDb; // En Başa Eklemeyi Unutmayın //En Başa Eklemeyi Unutmayın //-------------------------------------------------------------------------------------------- string yol = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= DataDirectory \GelismisSorgular.mdb"; OleDbConnection baglanti; OleDbCommand sorgu; OleDbDataAdapter adp; DataSet verial; protected void Page_Load(object sender, EventArgs e) protected void btnekle_click(object sender, EventArgs e) baglanti = new OleDbConnection(yol); sorgu = new OleDbCommand("insert into Musteriler (adsoyad,sehir,email,dogumtarihi,meslek,cinsiyet) " + " values (@adsoyad,@sehir,@email,@dogumtarihi,@meslek,@cinsiyet);", baglanti); sorgu.parameters.addwithvalue("@adsoyad", txtadsoyad.text); sorgu.parameters.addwithvalue("@sehir", txtsehir.text); sorgu.parameters.addwithvalue("@email", txteposta.text); sorgu.parameters.addwithvalue("@dogumtarihi", txtdtarihi.text); sorgu.parameters.addwithvalue("@meslek", txtmeslek.text); sorgu.parameters.addwithvalue("@cinsiyet", txtcinsiyet.text); adp = new OleDbDataAdapter(sorgu); verial = new DataSet();
adp.fill(verial); 4 Response.Write("Kayıt Eklendi"); // Textboxlara Değerlerimizi Girip Ekle Butonuna bastığınızda // Kayıt Eklendi Yazısı Çıkacaktır protected void btnsil_click(object sender, EventArgs e) baglanti = new OleDbConnection(yol); sorgu = new OleDbCommand("delete from Musteriler where AdSoyad=@adsoyad;", baglanti); sorgu.parameters.addwithvalue("@adsoyad", txtadsoyad.text); adp = new OleDbDataAdapter(sorgu); verial = new DataSet(); adp.fill(verial); Response.Write("Adı " + txtadsoyad.text + " olan Kayıt Silindi"); // Ad kısmında girilen isim silinecektir protected void btnguncelle_click(object sender, EventArgs e) baglanti = new OleDbConnection(yol); sorgu = new OleDbCommand("update Musteriler set sehir=@sehir, email=@email," + " dogumtarihi=@dogumtarihi, meslek=@meslek, cinsiyet=@cinsiyet where adsoyad=@adsoyad;", baglanti); sorgu.parameters.addwithvalue("@sehir", txtsehir.text); sorgu.parameters.addwithvalue("@email", txteposta.text); sorgu.parameters.addwithvalue("@dogumtarihi", txtdtarihi.text); sorgu.parameters.addwithvalue("@meslek", txtmeslek.text); sorgu.parameters.addwithvalue("@cinsiyet", txtcinsiyet.text); sorgu.parameters.addwithvalue("@adsoyad", txtadsoyad.text); adp = new OleDbDataAdapter(sorgu); verial = new DataSet(); adp.fill(verial); Response.Write("Kayıt Güncellendi"); //Adını girdiğimiz Kayıt güncellenecek protected void btnlistele_click(object sender, EventArgs e) baglanti = new OleDbConnection(yol); sorgu = new OleDbCommand("select * from Musteriler", baglanti); adp = new OleDbDataAdapter(sorgu); verial = new DataSet(); adp.fill(verial); this.gridview1.datasource = verial.tables[0]; this.gridview1.databind(); Kodu yazdıktan sonra çalıştırdığımızda veritabanımıza kayıt işlemlerini gerçekleştirmiş olacağız. GridView nesnesinin AutoGenerateSelectButton özelliği True yapılarak seçilen kayıt bilgilerinin metin kutularına yazdırılması sağlanabilir. Bunu yaptıktan sonra GridView çift tıklanarak aşağıdaki kodlar programa eklenir. protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
5 int satir = GridView1.SelectedIndex; //ilk iki sütünda Select ve ID alanları yer alır txtadsoyad.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[2].Text); txtsehir.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[3].Text); txteposta.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[4].Text); txtdtarihi.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[5].Text); txtmeslek.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[6].Text); txtcinsiyet.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[7].Text); Listelenen kayıtlar çok fazla olduğunda sayfaya yüklenmesi ve sayfada görüntülenmesi çok zaman almaktadır. Bunun için sayfalama (paging) işlemi yapılır. GridView içinde kayıtların sayfalar halinde görüntülenmesi için GridView1 nesnesinin AllowPaging özelliği True yapılır. Her sayfada görüntülenecek kayıt sayısı ise PageSize özelliği ile belirlenir. Örneğimizde PageSize ı 20 yapınız. Bundan sonra GridView1 nesnesinin PageIndexChanging olayına aşağıdaki kodlar yazılır. GridView1.PageIndex = e.newpageindex; kodu ile kullanıcının tıkladığı sayfa numarası GridView1 e bildirilir. Daha sonra kayıt kümesi yenilenir. protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) GridView1.PageIndex = e.newpageindex; //aşağıdaki kodlar listele butonundaki kodlarla aynıdır //burada veri kümesi yenilenerek GridView1 in yeni bilgileri göstermesi sağlanır baglanti = new OleDbConnection(yol); sorgu = new OleDbCommand("select * from Musteriler", baglanti); adp = new OleDbDataAdapter(sorgu); verial = new DataSet(); adp.fill(verial); GridView1.DataSource = verial.tables[0]; GridView1.DataBind();
Uygulama 3: 6 Önceki Uygulama 2 üzerinde geliştirme işlemleri yapalım. a) Öncelikle Cinsiyet alanındaki metin kutusunu silip yerine RadioButtonList ekleyelim. RadioButtonList1 in ID özelliğini rblcinsiyet olarak değiştiriniz. RadioButtonList e sırasıyla Text özellikleri Erkek ve Kadın olan alanları ekleyelim ve Value değerlerini sırasıyla E ve K yapalım. Ekle butonuna çift tıklayalım ve sorgu.parameters.addwithvalue("@cinsiyet", txtcinsiyet.text); satırını sorgu.parameters.addwithvalue("@cinsiyet", rblcinsiyet.selectedvalue); olarak değiştirelim. Aynı şekilde Güncelle butonuna tıklayalım ve ilgili satırı aynı şekilde değiştirelim. Bundan sonra GridView1 üzerine çift tıklayarak txtcinsiyet.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[7].Text); satırını if (GridView1.Rows[satir].Cells[7].Text=="E") rblcinsiyet.selectedindex = 0; else rblcinsiyet.selectedindex = 1; şeklinde değiştirelim. b) Doğum tarihi alanındaki metin kutusunu silip yerine Calendar ekleyelim. Calendar1 in ID özelliğini caldtarihi olarak değiştiriniz.
Ekle butonuna çift tıklayalım ve 7 sorgu.parameters.addwithvalue("@dogumtarihi", txtdtarihi.text); satırını sorgu.parameters.addwithvalue("@dogumtarihi", caldtarihi.selecteddate); olarak değiştirelim. Aynı şekilde Güncelle butonuna tıklayalım ve ilgili satırı aynı şekilde değiştirelim. Bundan sonra GridView1 üzerine çift tıklayarak txtdtarihi.text = HttpUtility.HtmlDecode(GridView1.Rows[satir].Cells[7].Text); satırını caldtarihi.selecteddate = Convert.ToDateTime(GridView1.Rows[satir].Cells[5].Text); caldtarihi.visibledate = caldtarihi.selecteddate; şeklinde değiştirelim. c) AdSoyad alanındaki metin kutusunun sağına bir Button ekleyelim ve Text özelliğini Ara, ID özelliğini btnara olarak değiştirelim. Butona çift tıklayıp aşağıdaki kodları yazınız: protected void btnara_click(object sender, EventArgs e) baglanti = new OleDbConnection(yol); //arama sorgusu sorgu = new OleDbCommand("select * from Musteriler where AdSoyad Like @adsoyad", baglanti); sorgu.parameters.addwithvalue("@adsoyad", txtadsoyad.text + "%"); //arama sorgusu sonu adp = new OleDbDataAdapter(sorgu); verial = new DataSet(); adp.fill(verial); GridView1.DataSource = verial.tables[0]; GridView1.DataBind();
Uygulama 4: MasterPage Kullanımı 8 Öncelikle Masterpage nedir ve ne işe yararı kısaca anlatalım. Bir alışveriş sitesi ya da başka sitelerde bir linki tıklasanız da bazı bölümlerin her sayfada sabit kaldığını görmüşsünüzdür. Biz de örneğin bir alışveriş sitesinde kategorilerden elektronik bölümünü seçtiğimizde orta kısımda elektronik ürünler gözükürken en üstte sitenin adı/sloganı vs. genellikle sol kısımda kategoriler ve en altta da copyright vs. değişmediği bir site yapmak istediğimizi varsayalım. Her bir sayfada bu sabit kalmasını istediğimiz bölümleri kopyala-yapıştır ile yapmış olalım. Sonradan yeni bir kategori daha eklemek ya da herhangi bir değişiklik yapmak istediğimizde bu oluşturduğumuz tüm sayfalarda kopyala-yapıştır bölümünde değişiklik yapmamız gerekecek. Bu işlem de zaman kaybı demek. Bu nedenle Masterpage geliştirilmiş. Masterpage ile bu sabit kalmasını istediğimiz ve her bir sayfada değiştirilmesini istediğimiz bölümleri belirtiyoruz. Daha sonra Masterpage i kullanan yeni sayfalar oluşturuyoruz. Bu sayfaları oluşturduğunuzda sabit bölümler otomatik olarak oluşuyor ve biz sadece değiştirilmesi izinli yeri değiştirebiliyoruz. Böylece sonradan bir değişiklik yapmak istediğimizde sadece Masterpage de yaptığımız değişiklikler tüm sayfalarda gözükecek, yani bütün sayfalarda tek tek değişiklik yapmamıza gerek kalmayacaktır. Şimdi de uygulamayı yapmaya başlayalım. Uygulamamızın tasarımı aşağıdaki gibi olacak: 1- Öncelikle Visual Studio da yeni bir proje oluşturmak için Asp.Net Web Site veya Empty Web Site seçiyoruz. 2- Asp.Net Web Site ile oluşturulan sayfada default.aspx i siliyoruz. Fakat daha sonra Masterpage i kullanan yeni bir form oluşturacağız. Empty Web Site ile oluşturulan sitede sayfa olmadığı için silmeye gerek kalmaz. 3- Sildikten sonra projemize sağ tıklayarak AddNew item->master Page i seçiyoruz. 4- Projemize sağ tıklayarak New Folder ile css isminde bir klasör oluşturuyoruz. Klasöre sağ tıklayıp Add New item- >Style Sheet i seçiyoruz. Aşağıdaki kodları stil sayfamıza yazıyoruz. body
background-color:#eeeeee; 9 #anayapi margin-left:auto; margin-right:auto; width: 900px; background: #fff; #baslik padding: 20px; background-color: #E0E0E0; #baslik h1 margin: 0; #menu float: left; width: 900px; background: #333; #menu ul margin: 0; padding: 0; #menu ul li list-style-type: none; float:left; #menu li a display: block; float: left; padding: 5px 10px; /*alt ve üst 5px, sağ ve sol 10px*/ color: #fff; text-decoration: none; border-right: 1px solid #fff; /*kalınlık,stil,renk*/
10 #menu li a:hover background: #383; #icerik float: left; width: 900px; /*renk,resim,tekrar,yer,başlangıç*/ background: #fffurl(layout-two-fixed-background.gif) repeat-y 100% 0; #icerik-sol clear: left; float: left; width: 560px; padding: 20px 0; margin: 0 0 0 30px; /*üst,sağ,alt,sol*/ #icerik-sol h2 margin: 0; #icerik-sag float: right; width: 240px; padding: 20px 0; margin: 0 20px 0 0; #icerik-sag h3 margin: 0; #alt clear: both; background: #ccc; text-align: right; padding: 20px; height: 1%;
11 5- Oluşturduğumuz stil sayfasını tasarım görünümündeki masterpage in üzerine sürükleyip bırakıyoruz. Head etiketlerinin içinde aşağıdaki satırın oluştuğuna dikkat edin. <link href="css/stylesheet.css" rel="stylesheet" type="text/css"/> 6-Masterpage in source sayfasına form etiketlerinin arasına aşağıdaki kodları yazıyoruz. <div id="anayapi"> <div id="baslik"> <h1> Site ismi </h1> <div id="menu"> <ul> <li><a href="#">ana sayfa</a></li> <li><a href="#">hakkımızda</a></li> <li><a href="#">ürünlerimiz</a></li> <li><a href="#">iletişim</a></li> </ul> <div id="icerik"> <divid="icerik-sol"> <h2> Yazı Başlığı </h2> <p> İçerik </p> <div id="icerik-sag"> <h3> Sağ yazı başlığı </h3> <p> İçerik </p> <div id="alt"> Copyright Site ismi, 20XX 7-Masterpage in içerik alanlarına Toolbox tan birer ContentPlaceHolder nesnesi ekleyelim. Bu nesneler diğer sayfalarda içeriği değiştirmemizi sağlayacak. Bunu yaptıktan sonra içerik div leri aşağıdaki şekilde değişecektir: <h2> <p> <p> <div id="icerik"> <div id="icerik-sol"> <asp:contentplaceholder ID="ContentPlaceHolder1" runat="server"> Yazı Başlığı</h2> İçerik </p> </asp:contentplaceholder> <div id="icerik-sag"> <asp:contentplaceholder ID="ContentPlaceHolder2" runat="server"> <h3> Sağ yazı başlığı </h3>
İçerik </p> </asp:contentplaceholder> 12 8- Şimdi masterpage in üstünde sağ tıklayıp Add ContentPage ile dört tane form ekleyelim. Birinin adını Default.aspx, diğerlerinin adını da sırasıyla Urunler.aspx, Hakkimizda.aspx ve iletisim.aspx yapalım. 9- Masterpage sayfamızın tasarım görünümünde menu linklerine tıklayarak özellikler penceresinden HRef özelliklerini ayarlayarak bağlantıları düzenleyin. <div id="menu"> <ul> <li><a href="default.aspx">ana sayfa</a></li> <li><a href="hakkimizda.aspx">hakkımızda</a></li> <li><a href="urunler.aspx">ürünlerimiz</a></li> <li><a href="iletisim.aspx">iletişim</a></li> </ul> 10- Artık her sayfanın ContentPlaceHolder nesnesini ihtiyacınız doğrultusunda düzenleyebilirsiniz. ContentPlaceHolder ın sağ üst köşesinden DefaulttoMaster s Content diyerek içeriğin MasterPage ile aynı olmasını sağlayabilir veya CreateCustomContent seçerek farklı bir içerik oluşturabilirsiniz.
Uygulama 5: Repeater kullanımı 13 Veritabanından gelen verilerin görüntülenmesi için kullanılan bir nesnedir. Gelen kayıt sayısı kadar etiketler arasındaki işlemleri tekrarlar. GridView gibi tablo görünümünde değildir; kullanıcının isteği doğrultusunda özelleştirilebilir. 1- Öncelikle Urun_veritabani.mdb isminde bir veritabanı oluşturun. 2- Veritabanını App_Data klasörüne ekleyiniz. (App_Data klasörü yoksa: Projeye sağ tıklayıp Add ASP.NET Folder seç) 3- Stil sayfasına aşağıdaki tanımları ekleyin: #Urunler border:2px solid #eeeeee; display:block; text-align:center; padding:5px; margin:5px; color:orange; float:left; #Urunler img width:115px; height:115px; 4- Urunler.aspx sayfasının içerik alanına (ContentPlaceHolder ifadeleri arasına) Repeater kontrolü ekleyin ve kaynak kodlarını aşağıdaki gibi düzenleyin: <h2>ürünler</h2> <p> <asp:repeater ID="Repeater1" runat="server"> <ItemTemplate> <div id="urunler"> <%#Eval("UrunAdi") %><br/> <asp:image ID="Image1" runat="server" ImageUrl='<%#Eval("UrunResmi") %>'/><br/> Fiyat: <%#String.Format("0:C", Eval("UrunFiyati")) %> </ItemTemplate> </asp:repeater> </p><p> </p> 5- Daha sonra Page_Load() olayına veritabanı bağlantısı için gerekli kodları yazın. using System.Data.OleDb;/* Eklemeyi unutmayın */
protected void Page_Load(object sender, EventArgs e) string yol = "Provider=Microsoft.ACE.OleDb.12.0;Data Source= DataDirectory //Urun_Veritabani.mdb"; 14 OleDbConnection baglan = new OleDbConnection(yol); OleDbCommand sorgu = new OleDbCommand("select * from Urunler", baglan); OleDbDataAdapter sadp = new OleDbDataAdapter(sorgu); DataSet ds = new DataSet(); sadp.fill(ds); Repeater1.DataSource = ds.tables[0]; Repeater1.DataBind(); 6- Projemizin üzerine sağ tıklayıp New Folder seçeneği ile images isminde bir klasör oluşturunuz. Bu yeni klasörün üzerine sağ tıklayıp sırasıyla 1.png, 2.png, isminde resimler ekleyiniz.
Uygulama 6: Session (Oturum) Kullanımı 15 1. Yönetici paneli oluşturmak için projemize sağ tıklayıp New Folder seçeneği ile admin isminde bir klasör oluşturunuz. 2. MasterPage sayfasını kopyalayıp admin klasörünün altına kopyalayınız. MasterPage sayfasının source sayfasında css dosyasının konumunu düzenleyiniz. <link href="../css/stylesheet.css" rel="stylesheet" type="text/css" /> 3. MasterPage in tasarım görünümünde sağ alana (icerik-sag div i) resimdeki kontrolleri ekleyip özelliklerini ayarlayınız. Panel1 içine; Label1: Text=Kullanıcı Adı Label2: Text=Şifre TextBox1: ID=txtKAdi TextBox2: ID=Sifre Button1: ID=btnEkle, Text=Giriş RequiredFieldValidator1: ControlToValidate=txtKAdi, ErrorMessage=Kullanıcı adı girilmedi RequiredFieldValidator2: ControlToValidate=txtSifre, ErrorMessage=Şifre girilmedi CustomValidator1: ControlToValidate=txtSifre, ErrorMessage=Yanlış Kullanıcı adı ve/veya Şifre Panel1 dışına; Button2: ID=btnCikis, Text=Oturumu Kapat, Visible=False 4. MasterPage in kod sayfasında Page_Load olayına aşağıdaki kodları yazınız: protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) if (Session["Yonetici"] == null) Panel1.Visible = true; btncikis.visible = false; //using System.IO; eklemeyi unutma if(path.getfilename(request.path)!="yonetim.aspx") Response.Redirect("Yonetim.aspx"); else Panel1.Visible = false; btncikis.visible = true; 5. CustomValidator1 nesnesine çift tıklayıp ServerValidate olayına aşağıdaki kodları yazınız: protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) string yol = "Provider=Microsoft.ACE.OleDb.12.0;Data Source= DataDirectory //Urun_Veritabani.mdb"; OleDbConnection baglan = new OleDbConnection(yol);
16 OleDbCommand sorgu = new OleDbCommand("select * from Kullanicilar where " + "KullaniciAdi=@kadi and sifre=@sifre", baglan); sorgu.parameters.addwithvalue("@kadi", txtkadi.text); sorgu.parameters.addwithvalue("@sifre", txtsifre.text); OleDbDataAdapter sadp = new OleDbDataAdapter(sorgu); DataSet ds = new DataSet(); sadp.fill(ds); if (ds.tables[0].rows.count > 0) //Eğer kullanıcı ve şifre doğru ise args.isvalid = true; Session["Yonetici"] = ds.tables[0].rows[0][1]; Panel1.Visible = false; btncikis.visible = true; else //Eğer kullanıcı ve şifre yanlış ise args.isvalid = false; 6. Çıkış butonuna çift tıklayıp aşağıdaki kodları yazınız: protected void btncikis_click(object sender, EventArgs e) Session.RemoveAll(); Panel1.Visible = true; btncikis.visible = false; Response.Redirect("Yonetim.aspx"); 7. MasterPage sayfasındaki menu div bloğunu düzenleyiniz. <div id="menu"> <ul> <li><a href="yonetim.aspx">ana sayfa</a></li> <li><a href="urunkaydi.aspx">ürün Kaydı</a></li> <li><a href="sifre.aspx">şifre Değiştirme</a></li> </ul> 8. Admin klasöründeki MasterPage e sağ tıklayıp Add Content Page ile üç sayfa ekleyip isimlerini değiştiriniz: Yonetim.aspx, UrunKaydi.aspx, Sifre.aspx. Her sayfanın sağ içerik alanındaki ContentPlaceHolder nesnesini Default to Master s Content olarak ayarlayınız. 9. UrunKaydi.aspx sayfasının tasarım görünümünü aşağıdaki şekilde düzenleyiniz:
17 Label1: Text=Ürün Adı Label2: Text=Ürün Resmi Label3: Text=Fiyatı TextBox1: ID=txtUrunAdi FileUpload1 TextBox2: ID=txtUrunFiyati Button1: ID=btnKaydet, Text=Kaydet GridView1: AllowPagin=True, PageSize=5, AutoGenerateColumns=False, AutoGenerateDeleteButton=True 10. GridView1 e sağ üst köşesindeki oka tıklayıp Edit Columns penceresini aşağıdaki şekilde düzenleyiniz: Ürün No (BoundColumn): HeaderText=Ürün No, DataField=UrunNo Ürün Adı (BoundColumn): HeaderText=Ürün Adı, DataField=UrunAdi Ürün Resmi (ImageField): HeaderText=Ürün Resmi, DataImageUrlField=UrunResmi Ürün Fiyatı (BoundColumn): HeaderText=Ürün Fiyatı, DataField=UrunFiyati 11. UrunKaydi.aspx sayfasının kodlarındaki Page_Load olayına aşağıdaki kodları yazınız: protected void Page_Load(object sender, EventArgs e) string yol = "Provider=Microsoft.ACE.OleDb.12.0;Data Source= DataDirectory //Urun_Veritabani.mdb"; OleDbConnection baglan = new OleDbConnection(yol); OleDbCommand sorgu = new OleDbCommand("select * from Urunler", baglan); OleDbDataAdapter sadp = new OleDbDataAdapter(sorgu); DataSet ds = new DataSet(); sadp.fill(ds); GridView1.DataSource = ds.tables[0]; GridView1.DataBind(); 12. GridView1 in PageIndexChanging olayına aşağıdaki kodları yazınız: protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) GridView1.PageIndex = e.newpageindex; string yol = "Provider=Microsoft.ACE.OleDb.12.0;Data Source= DataDirectory //Urun_Veritabani.mdb";
18 OleDbConnection baglan = new OleDbConnection(yol); OleDbCommand sorgu = new OleDbCommand("select * from Urunler", baglan); OleDbDataAdapter sadp = new OleDbDataAdapter(sorgu); DataSet ds = new DataSet(); sadp.fill(ds); GridView1.DataSource = ds.tables[0]; GridView1.DataBind(); 13. Kaydet butonuna çift tıklayıp aşağıdaki kodları yazınız: protected void btnekle_click(object sender, EventArgs e) string yol = "Provider=Microsoft.ACE.OleDb.12.0;Data Source= DataDirectory //Urun_Veritabani.mdb"; OleDbConnection baglan = new OleDbConnection(yol); //kayıt ekleme komutları OleDbCommand sorgu = new OleDbCommand("insert into Urunler " + "(urunadi,urunresmi,urunfiyati) values(@urunadi,@urunresmi,@urunfiyati)",baglan); sorgu.parameters.addwithvalue("@urunadi", txturunadi.text); sorgu.parameters.addwithvalue("@urunresmi", "~/images/"+ FileUpload1.FileName); sorgu.parameters.addwithvalue("@urunfiyati", txturunfiyati.text); //kayıt ekleme komutları sonu OleDbDataAdapter adp = new OleDbDataAdapter(sorgu); DataSet verial = new DataSet(); adp.fill(verial); Response.Write("Kayıt Eklendi"); //resmin images klasörüne yüklenmesi if (FileUpload1.HasFile) FileUpload1.SaveAs(Server.MapPath("~/images/" + FileUpload1.FileName)); 14. GridView1 in RowDeleting olayına aşağıdaki kodları yazınız: protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) string yol = "Provider=Microsoft.ACE.OleDb.12.0;Data Source= DataDirectory //Urun_Veritabani.mdb"; OleDbConnection baglan = new OleDbConnection(yol); //silme işlemi komutları OleDbCommand sorgu = new OleDbCommand("delete from Urunler where UrunNo=@urunno", baglan); sorgu.parameters.addwithvalue("@urunno", GridView1.Rows[e.RowIndex].Cells[1].Text); //silme komutları sonu OleDbDataAdapter adp = new OleDbDataAdapter(sorgu); DataSet verial = new DataSet(); adp.fill(verial); Response.Write("Kayıt Silindi");