Visual Studio’da Access Veri Tabanı Kullanarak Profil Sayfasında Kayıt Güncelleme İşlemleri
Merhaba arkadaşlar bir önceki dersimizde üye giriş işlemleri yapmıştık. Üye kullanıcı adını ve şifresini girdikten sonra girilen değerleri veri tabanında kontrolünü yapıp eğer doğru ise kullanıcıyı profil sayfasına yönlendirmiştik.
Bu dersimizde kullanıcı profil sayfasına girdiğinde kullanıcının bilgileri görüntüleyip, eğer kullanıcı isterse kişisel bilgilerini değiştirebilecek. Ayrıca profil ekranında aşağıdaki resimde olduğu gibi profil resmi bulunacak. Yine kullanıcı bu profil resmini değiştirebilecek.
Öncelikle profil.aspx isminde sayfa oluşturuyoruz. Solution Explorer Ekranında proje ismi üzerine sağ tıklayıp Add=>Add New Item yolunu izleyip açılan ekrandan Web Form u seçip Name kısmına profil.aspx yazarak sayfamızı oluşturduk.
Sayfamızı oluşturduktan sonra Design ekranında iken sayfamıza 6 Satır 3 Sütunlu tablo ekliyoruz. Tablomuzun 1. Sütunundaki hücreleri birleştiriyoruz. Toolbox ekranından image nesnesi alıp bu alana yerleştiriyoruz. Boyutlarını Properties ekranından 250px olarak ayarlıyoruz. Üye profil resmini yerleştireceğiz. 2. Sütundaki satırları ise aşağıdaki resimdeki gibi tasarlıyoruz.
Eklediğimiz kontrollerin isimlerini Properties ekranındaki “Id” alanını yukarıdaki resimde belirtilen değerler ile değiştiriyoruz.
Kullanıcı giris.aspx ekranından giriş yaptığında giriş başarılı ise bu sayfaya gelecek, giriş yapan kullanıcının profil resminin ve kişisel bilgilerini ilgili TextBox’lara yazdıracağız. Eğer kullanıcı isterse bilgileri değiştirip “Güncelle” butonuna tıklayarak bilgilerini değiştirebilecek.
Bu sayfada 2 farklı işlem var birincisi sayfa açıldığında giriş yapan kullanıcının bilgilerini ilgili alanlara aktarmak. İkinci yapacağımız işlem ise kullanıcı eğer güncelle düğmesine tıklarsa yeni değerleri eski değerler ile değiştirip bilgileri güncellemek.
Giriş yapan kullanıcının bilgilerini ilgili alanlara aktarmak için sayfanın Page Load olayını kullanacağız. Burada öncelikle giriş yapan kullanıcıyı tespit edip veri tabanından ilgili kullanıcının bilgileri getirip kontrollere aktarmak.
Sayfamızın boş bir yerinde çift tıklayıp kod ekranına geçiş yapalım.
Sayfamızın üst kısmındaki kütüphane bölümüne veri tabanı işlemleri yapacağımız için
using System.Data; using System.Data.OleDb;
kütüphanelerini ekleyelim. Kütüphanemizi ekledikten sonra
protected void Page_Load(object sender, EventArgs e) { }
Bloğu arasına kodlarımızı yazabiliriz.
Giris.aspx sayfamızda kullanıcı eğer doğru bilgileri girmişse Session[“kullanici”] = eposta.Text; şeklinde komut kullanıp giriş yapan kullanıcının eposta adresini session değişkeni olarak belirlemiştik. Yani giriş yapan kullanıcıya eposta adresini kimlik olarak verdik ve bu kimlikle kullanıcı sitede dolaşabilir. Profil sayfamızda böyle bir session değişkeni olup olmadığını kontrol edip varsa ilgili kişinin bilgilerini çekeceğiz, eğer böyle bir kullanıcı yoksa da giriş yapması için, giris.aspx sayfasına yönlendireceğiz.
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Session["kullanici"] != null) { OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Server.MapPath("App_data\\proje.accdb")); baglanti.Open();//bağlantımızı açtık OleDbCommand arasorgu = new OleDbCommand("Select * from uyeler where eposta=@postaadresi", baglanti); arasorgu.Parameters.AddWithValue("@postaadresi", Session["kullanici"] ); OleDbDataReader okunan = arasorgu.ExecuteReader(); if (okunan.Read()) { eposta.Text = okunan["eposta"].ToString(); adi.Text = okunan["adi"].ToString(); soyadi.Text = okunan["soyadi"].ToString(); sifre.Text = okunan["sifre"].ToString(); resim.ImageUrl = "profilresimleri/" + okunan["resim"].ToString(); } } else { Response.Redirect("giris.aspx"); } } }
Yazdığımız kodları açıklamak istersek
if (Session["kullanici"] != null)
komutu ile eposta isminde session değişkenin boş olup olmadığını kontrol ettik ve eğer boş değilse
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Server.MapPath("App_data\\proje.accdb")); baglanti.Open();//bağlantımızı açtık
komutları ile veri tabanımıza bağlantık ve bağlantıyı açtık.
OleDbCommand arasorgu = new OleDbCommand("Select * from uyeler where eposta=@postaadresi", baglanti); arasorgu.Parameters.AddWithValue("@postaadresi", Session["kullanici"]);
Komutu ile giriş yapan kullanıcının eposta adresine sahip kullanıcıyı sorguladık.
OleDbDataReader okunan = arasorgu.ExecuteReader(); if (okunan.Read()) { eposta.Text = okunan["eposta"].ToString(); adi.Text = okunan["adi"].ToString(); soyadi.Text = okunan["soyadi"].ToString(); sifre.Text = okunan["sifre"].ToString(); // resim.ImageUrl = "profilresimleri/" + okunan["resim"].ToString(); }
Komutları ilede yaptığımız sql sorgusu sonucunda çekilen kayda ait değerleri OleDbDataReader komutu ile alıp, okunan.Read()) komutu ile değerleri çektik. Ve okunan isimli kontroldeki kullanıcıya ait verileri sayfamızdaki eposta, adi, soyadi, sifre ve resim alanlarına aktardık.
Resim kontrolü için dikkat ettiyseniz profilresimleri isimli klasörden resimleri getirdik. Varsayılan olarak üye kayıt olduğunda kayıt ekranında üye resmi kaydı yapmadık. Kullanıcı kaydolduktan sonra profil sayfasına girdiğinde ilk profil resmini burada oluşturacak. O yüzden ilk defa giriş yapıldığında profil resmi olmayacaktır.
Resim kontrolü için bu dersimizde komutu pasif yaptım. Resim yükleme ve güncelleme işlemlerini bir sonraki dersimizde yapacağız. Şimdilik oraya çok takılmayın.
Birinci adımı bitirmiş olduk. Kullanıcı giriş yaptığında yukarıdaki gibi bilgileri formumuza getirdik.
Şimdi yapacağımı iş ise kullanıcı buradan herhangi bir bilgiyi değiştirip güncelle butonun tıkladığında bilgileri güncelleyeceğiz.
Bunun için güncelle düğmesine çift tıklayıp kod ekranına giriş yapıyoruz. Kodlarımızı “Güncelle” düğmesinin Click olay olan aşağıdaki kod bloğuna yazacağız.
protected void Button1_Click(object sender, EventArgs e) { OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Server.MapPath("App_data\\proje.accdb")); baglanti.Open(); OleDbCommand guncellesorgu = new OleDbCommand("update uyeler set eposta=@eposta,adi=@adi, soyadi=@soyadi, sifre=@sifre where eposta=@kullanici", baglanti); guncellesorgu.Parameters.AddWithValue("@eposta", eposta.Text); guncellesorgu.Parameters.AddWithValue("@adi", adi.Text); guncellesorgu.Parameters.AddWithValue("@soyadi", soyadi.Text); guncellesorgu.Parameters.AddWithValue("@sifre", sifre.Text); guncellesorgu.Parameters.AddWithValue("@kullanici", Session["kullanici"]); guncellesorgu.ExecuteNonQuery(); baglanti.Close(); mesaj.Text = "Bilgiler güncellendi"; }
Öncelikle
- Aşağıdaki komutlar ile veri tabanı bağlantısını yapıyoruz ve bağlantımızı açıyoruz.
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("App_data\\proje.accdb")); baglanti.Open();
OleDbCommand guncellesorgu = new OleDbCommand("Update uyeler set eposta=@eposta,adi=@adi, soyadi=@soyadi, sifre=@sifre where eposta=@kullanici", baglanti); guncellesorgu.Parameters.AddWithValue("@eposta", eposta.Text); guncellesorgu.Parameters.AddWithValue("@adi", adi.Text); guncellesorgu.Parameters.AddWithValue("@soyadi", soyadi.Text); guncellesorgu.Parameters.AddWithValue("@sifre", sifre.Text); guncellesorgu.Parameters.AddWithValue("@kullanici", Session["kullanici"]);
komutları ile güncelleme işlemini gerçekleştirdik.
Buradaki Update uyeler set güncelleme komutudur. Veri tabanındaki verileri başka veriler ile değiştirmek için kullanırız. Dikkat edilmesi gereken husus where ile hangi bilgileri güncelleyeceğimizi belirtmemiz gerekir. Yoksa tüm kayıtları günceller. Bizde burada where komutu ile eposta adresi Session[“kullanici”]); bilgilerine sahip olan kullanıcının bilgilerini değiştirdik.
Parameters komutu ile tablodaki alan aktaracağımız kontroldeki değişkeni belirttik. Sorgumuzu yazdıktan sonra ;
guncellesorgu.ExecuteNonQuery(); baglanti.Close(); mesaj.Text = “Bilgiler güncellendi”;
komutları ile sırası ile sorgumuzu çalıştırdık. Sonra bağlantımızı kapattık ve son olarak ta “Bilgiler güncellendi” diyerek kullanıcıya mesaj verdik.
Bilgileri değiştirdiğimizde yukarıdaki gibi güncelleme işlemi gerçekleşti.
Sayfamızın Kod bloğunun son hali aşağıdaki gibidir. Bir sonraki derste profil.aspx sayfamızdaki profil resmini güncellemeyi işleyeceğiz. Şimdilik hoşçakalın.
Page Load Kodları
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Session["kullanici"] != null) { OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("App_data\\proje.accdb")); baglanti.Open();//bağlantımızı açtık OleDbCommand arasorgu = new OleDbCommand("Select * from uyeler where eposta=@postaadresi", baglanti); arasorgu.Parameters.AddWithValue("@postaadresi", Session["kullanici"]); OleDbDataReader okunan = arasorgu.ExecuteReader(); if (okunan.Read()) { eposta.Text = okunan["eposta"].ToString(); adi.Text = okunan["adi"].ToString(); soyadi.Text = okunan["soyadi"].ToString(); sifre.Text = okunan["sifre"].ToString(); //resim.ImageUrl = "profilresimleri/" + okunan["resim"].ToString(); } } else { Response.Redirect("giris.aspx"); } } }
Button Click olayı
protected void Button1_Click(object sender, EventArgs e) { try { OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("App_data\\proje.accdb")); baglanti.Open(); OleDbCommand guncellesorgu = new OleDbCommand("update uyeler set eposta=@eposta,adi=@adi,soyadi=@soyadi,sifre=@sifre where eposta=@postaadresi", baglanti); guncellesorgu.Parameters.AddWithValue("@posta", eposta.Text); guncellesorgu.Parameters.AddWithValue("@adi", adi.Text); guncellesorgu.Parameters.AddWithValue("@soyadi", soyadi.Text); guncellesorgu.Parameters.AddWithValue("@sifre", sifre.Text); guncellesorgu.Parameters.AddWithValue("@postaadresi", Session["kullanici"]); guncellesorgu.ExecuteNonQuery(); baglanti.Close(); mesaj.Text = "Bilgiler güncellendi"; } catch (Exception hata) { mesaj.Text = hata.ToString(); } }