VERİTABANI NEDİR? ADO.NET



Benzer belgeler
ADO.NET VERİTABANINA BAĞLANTI. Bir web formu üzerinden veritabanına bağlantımızı anlatacağım. UYGULAMA 1

Önce Access açıp,masaüstü ne, vt.mdb adlı veri tabanı dosyasını oluşturuyoruz. Kayıt türünü seçiyoruz

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

NOT: VERİTABANINDAKİ TABLOLARI OLUŞTURMAYI DA UNUTMAYACAĞIZ.

1 Aralık 2011 / Perşembe

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

İNTERNET TABANLI PROGRAMLAMA- 10.ders GRIDVIEW İÇERİSİNDE YENİ KAYIT EKLEME, FOTOGRAF LİSTELEME, SIRALAMA YAPMA VE DROPDOWN EKLEME

İNTERNET TABANLI PROGRAMLAMA- 9.ders BİLGİLERİN GRIDVIEW İÇERİSİNDE EKLENMESİ, DÜZENLENMESİ VE SİLİNMESİ

İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Kitap Ekle linki tıklandığında, admin.aspx sayfamızın görüntüsü aşağıdaki şekilde olacaktır.

Resimlerin üstüne yazı yazacağız. resimyukle.aspx sayfası oluşturuyoruz.

Yeni site açıp, masa üstündeki vt.mdb dosyasını sitemize ekliyoruz ve a bağlanıp 1 Mart tarihli sayfayı açıyoruz

Response : Sunucunun istemciye veri yollamasını

İNTERNET TABANLI PROGRAMLAMA- 11.ders FORM UYGULAMASI (DROPDOWN BİLGİ YÜKLEME, VALIDATION KONTROLLERI, PAREMETRELİ KAYIT YAPMA)

A- VERİTABANI BAĞLANTISINI HAZIR NESNE KULLANARAK YAPMA

User Control : Standart bir kullanıcı arabirimi oluşturarak; bir uygulama içinde birden fazla. Siteye User Control Eklemek : 22 Mart 2012 / Perşembe

SINIF İÇİ UYGULAMA KODLARI

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

ASP.NET ORTAMINDA C# VERİTABANI UYGULAMALARI

24 Kasım 2011 / Perşembe

GridView ve DetailsView kullanarak kayıt düzenlemek

ASP.NET ile Bir Web Sitesi Oluşturma

BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME İŞLEMLERİNİN BİRLİKTE ANLATIMI

12 Ocak 2012 / Perşembe

Çözüm :RadioButtonList1 kontrolunuekliyoruz.enableautopostback iaktifleştiriyoruz..

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

1) Visual Studio da WebSiteemlakci adında yeni bir site oluşturuyoruz.

yeni_uye_kayit.ascx UserControl sayfamızda, kaydedilmek istenen üye eğer daha önce veritabanımızda kayıtlı ise bunu buldurup kullanıcıyı uyaralım;

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 9 Tema Kullanımı

Şekil 2.1. Bu bölümde ASP.Net platformumuzu açtığımızda Toolbox penceresindeki Standart bölümündeki kontrollerden bahsedeceğiz.(şekil 2.2) Şekil 2.

VeriTabanı Uygulamaları

VERİTABANINA BİLGİ KAYDEME, DÜZENLEME, LİSTELEME İŞLEMLERİ

C Sharp /Veri tabanı işlemleri

11. STIL ŞABLONU (CSS) MENÜ İŞLEMLERİ

MASTER PAGE SAYFASI KULLANIMI

PROGRAMLAMA DERSİ 1. İNTERNET

İnternet,artık hayatımızın önemli bir parçası. Her gün interneti programlar aracılığı ile ya da internet siteleri aracılığı ile kullanıyoruz.

Resmin dosya adı tutulacaktır. Ve program yolu ile path(yolu ile) sayafaya eklenecektir.

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

Command Nesnelerini Kullanarak Tablolarda Değişiklik Yapmak:

Sağ Tıkla. 5 Ocak 2012 / Perşembe. Yeni bir site açıyoruz. File New Web Site Browse yeni klasör ocak5persembe OK


Yeni Web Sitesi Oluşturma: Visual Studio 2012 açılır. File>New>Web Site>C#-Asp Empty Site

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

Columns : * Next Text Query veri tabanındaki urunler tablosu görülüyor. Finish, çalıştırınca direk veri tabanındaki bilgileri alıyor.

Web sayfalarında en önemli bir konu halini alan bilgi girişi ve bunların kontrollerini yapan kontrollerdir (Şekil 3.1). Şekil 3.1

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Örnek : TextBox1,RangeValidator,Button,Label girelim aralığında değer girilmesini istiyoruz. Label1.Text=TextBox1.Text ;

Daha önce bu işlemin iki tane dosya oluşturduğunu gördük. GecDenTest.aspx dosyasının source kısmında içeriğini inceleyecek olursanız en başta

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

ADO.NET. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

İNTERNET TABANLI PROGRAMLAMA- 7.ders

VISUAL STUDIO.NET ve Veritabanı

ASP.Net validation controls validate the user input data to ensure that useless, unauthenticated or

WEB TASARIM. CSS, IFRAME, TEMPLATE, SLICE, INCLUDE(php komutu) Tarık ÖZEL

BİLGİLERİ GRIDVIEW DE GÖRÜNTÜLEME VE DÜZENLEME

ASP.NET M U S T A F A K I L I Ç M C S E, M C D B A

KARADENİZ TEKNİK ÜNİVERSİTESİ YENİ WEB SİTESİ BİRİM YETKİLİSİ WYS (WEB YÖNETİM SİSTEMİ) KULLANIM KLAVUZU

CSS(CASCADING STYLE SHEETS)

Karabük Üniversitesi, Mühendislik Fakültesi... AJAX KULLANIMI

BİLİŞİM TEKNOLOJİLERİ

Android Ders Notları

Asp.Net Veritabanı İşlemleri

HESAP MAKİNASI YAPIMI

DYNED SİSTEMİNİ AKTİF OLARAK KULLANMAK İÇİN ÖĞRETMEN OLARAK HANGİ İŞLEMLER YAPACAĞIZ AŞAĞIDA ADIM ADIM YAZILMIŞTIR

Kişisel Web Sitesi Hazırlama, Öğretim Materyallerinin Web Üzerinden Yayınlanması

MUĞLA SITKI KOÇMAN ÜNĠVERSĠTESĠ. BĠLGĠ ĠġLEM DAĠRE BAġKANLIĞI. AKADEMĠK PERSONEL KĠġĠSEL WEB SAYFASI KULLANIM KILAVUZU MUKWEB ĠÇĠNDEKĠLER TABLOSU

ASP.NET NEDİR? .NET FRAMEWORK NEDİR? ASP.NET WEB UYGULAMALARI

EKLEME SORGUSU. 2) ornekveritabani.accdb isimli veritabanınızı çift tıklayarak açınız. Sorarsa, İçeriği Etkinleştir komutunu uygulayınız.

İÇERİK YÖNETİM SİSTEMİ KULLANMA KILAVUZU

KULLANIM KILAVUZU. Reserve Online Reservation Systems

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

DetailsView. DetailsView kontrolünün GridView kontrolüyle paralel şekilde kullanımı ile ilgili örnek

Cssin Html İçerisinde Kullanım Şekilleri, Puseduo Class Örnekleri

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Veritabanı İşlemleri

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

ACCESS DERS Tablolarda Düzenleme

MEBWEB OKUL/KURUM WEB SİTELERİ KULLANIM KLAVUZU TEMEL İŞLEMLER

Boğaziçi Üniversitesi Bilgi İşlem Merkezi. Web Yönetimi Birimi. Drupal Kullanım Kılavuzu

ORT3167 İnternet Programcılığı 1 Ders1-2. Öğr. Grv. Aybike ŞİMŞEK

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 2 Asp.NET Sunucu Kontrolleri

Mikro Ayarları. Mikro Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Enlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır.

HTML Bloklar. CSS Display özelliği

SQL SERVER BAĞLANTISI VE TABLOLAR

Vbnet Vbne access bağ ba lant lan ı t s ı ı s, ekleme, güncelleme,,silme

Vega Ayarları. Vega Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Tedarikçi Portalı, sitede bulunan tedarikçiye ait ürünlerin verilen yetkiler dahilinde tedarikçiye kullanım hakkı tanıyan bir portaldır.

JavaScript Örnekleri PDF

HTML Sayfaları. Bütün html sayfaları

Bu uygulamayı yapabilmek için SQL Server'da Query Analyzer kullanabilmekle beraber, ADO.NET bilgisine sahip olmanız gerekir.

Görsel Programlama (Visual Programming) 2.Hafta

MIS213T İNTERNET VE WEB PROGRAMLAMA GÜZ 2016 LAB DOKÜMANI #2. 1. Bölüm: Temel HTML Etiketleri - Resimler

Proje 1. Arayüz Tasarımı

Transkript:

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");