Nano'nun Günlüğü…

Ideallerimi gerceklestirmek icin arastiriyorum, Unutmamak icin yaziyorum!

  • Bulundugunuz Sayfa: 
  • Ana Sayfa
  • WPF Ve LinQ Ile Veritabani Islemleri…

WPF Ve LinQ Ile Veritabani Islemleri…

Gönderim Ocak 31st, 2012

Bu makalemde Visual Studio’nun Windows Presentation Foundation ozelligi ile ilgili bir yeni uygulama daha yapicaz. Makale sonunda geldigimizde ise Visual Studio’nun uc farkli ozelligini bir arada kullanarak bir uygulama gelistirmis olacagiz.

Kullanacagim islemlerden digeri; Linq ile birlikte veri tabaninda ki CRUD islemlerinide icine katmamiz olacak.

Ve son olarakta tasarladigimiz projemizin formlarini Expression Blend ile birlikte tasarim kisimlarini guclendiricez.

 

Ise oncelikle MsSql Server’da bir veri tabani hazirlamakla basliyoruz. Yapacagimiz uygulama Personel islemleri ile ilgili olacagi icin tablomuzun ismini tbl_kisiler ismini veriyorum, ve icerisine verilerimizi giriyoruz.

 

 

 

 

 

Visual Studio tarafindaki tasarim kismimiza gecelim.Yeni bir windows forms application projesi olusturuyorum. ve ardindan ilk gelen form1 in Properties’inden isMidiContainer ozelligini true yaparak MDI form haline getirmis oluyorum. Form uzerine bir adet MenuStrip nesnesi atiyorum ve ana formumun menulerini yanda goruldugu gibi tasarliyorum.

Daha sonra Server Explorer penceresinden veri tabanimizin baglantilarini yapabilecegimiz veri tabani ve tablosunu belirliyoruz.

Burada olusmasi gereken baglantiyi Connect to Database butonu yardimi ile isleme sokuyoruz.

Ve ardindan karsimiza gelen database listesinden uygulamamiz icin calistirmamiz gereken tbl_kisiler tablosunu gormus oluyoruz.

 

Simdi sira geldi Linq baglantilarimizi gerceklestirmemiz icin gereken Linq to Sql class’imizi projemize eklemeye…

Solution ekranindan

sag click, add -> new item -> data seceneginden sonra LinQ to SQL Classes i tikliyor

ve class’imiza yeni bir isim veriyoruz.

Ve Server Explorer’daki tbl_kisiler tablomuzu Dbml class’imizin icerisine surukleyerek birakiyoruz.

Olusturdugumuz sql sinifini da kaydettikten sonra ikinci formumuzu olusturuyoruz.

ikinci formumuz icin yine solution ekranindan projemize form2’mizi ekliyoruz. Ekledigimiz from CRUD islemlerini temsil eden bir arayuz olarak calisacaktir. Arayuz olacaktir dedim cunku formumuzun tasarimini WPF tarafinda XAML’ler sayesinde olusturucaz. Tabi bu yapacagimiz tasarima yine Linq komutlarimizi gomecegiz.

Solution ekraninda sag click, add -> new item -> wpf seceneginden sonra user control(wpf) i tikliyoruz. Projemize ekledigimiz wpf sayesinde karsimiza Xaml yapisi gelecektir.

Xaml in gorunum kisminda yanda ki gibi bir arayuz tasarlayacagiz. Bunun icin etiketler icin label, cinsiyet bilgisi icin radiobutton, islemleri gerceklestirmek icin butonlar, verilerimizi kullaniciya listelettirmek icin gridview nesnesi (ki bu nesneyi canvas icerisine aliyoruz), ve listemizden sectigimiz kisinin yani tikladigimiz herhangi bir ismin bilgilerini tek bir satirda kullaniciya bilgilendirmek icin textblock nesnesini kullaniyoruz. Ekledigimiz datagrid’in xaml kod kisminda <DataGrid AutoGenerateColumns=”false” yazan yerini True olarak degistiriyoruz. Sebebi ise formumuz ilk acildiginda datagrid’e verilerimiz listelenmis sekilde karsimiza gelmesi icindir. Yaptigimiz bu tasarimi kaydediyoruz ve butun projeyi rebuild ederek yaptigimiz bu tasarimida proje icerisinde aktiflestirmis oluyoruz.

Yaptigimiz bu arayuzu ekledigimiz form2’nin icerisine yerlestirme islemine geldi sira. Formumuzun uzerine Tools’dan Wpf Interoperability sekmesinden ElementHost nesnesini alarak formumuza yerlestiriyoruz. Ekledigimiz nesnenin uzerinde cikan kucuk ok’u tiklariz. Select Hosted Content icin acilir listeden olusturdugumuz wpf arayuzunu yani usercontrol1.xaml i seciyoruz. Formumuzun uzerine hazirlamis oldugumuz arayuz yerlestirilmis olarak karsimiza geliyor.

Simdi tasarladigimiz wpf arayuzumuzun arka planda ki kodlarini yazalim. Veri tabanina baglanti saglayacagimiz ve verileri degiskenlere atarak Linq’da ki sql cumlelerine aktarabilecegimiz butun komutlari formun bu load ozelligine yaziyoruz. button1 ile birlikte kaydetme islemleri icin gerekli sql cumlelerini, button2 ile sil islemlerini icin gerekli sql cumlelerini, ve datagrid’imize tikladigimizda textblock’umuza aktarilacak butun islemlerin komutlarini asagidaki gibi kod ekranimiza yaziyoruz.

UserControl1.Xaml.Cs Kaynak Kodu ;

using System.Data;
using System.Data.SqlClient;

namespace Personel_Programi
{
public partial class UserControl1 : UserControl
{
DataClasses1DataContext data1 = new DataClasses1DataContext();
private string baglanti = “Data Source=NANO_SNG;Initial Catalog=nanonungunlugu;Integrated Security=True”;

public UserControl1()
{
InitializeComponent();
}

public void DataGridVeriYukle()
{
var kayit = from liste in data1.tbl_kisilers
select new
{
Adi = liste.ad,
Soyadi = liste.soyad,
Yasi = liste.yas,
Cinsiyeti = Convert.ToBoolean(liste.cinsiyet)
};
dataGrid1.ItemsSource = kayit.AsEnumerable();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
DataGridVeriYukle();
}

private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
textBlock1.Text = dataGrid1.SelectedValue.ToString();
}

private void button1_Click(object sender, RoutedEventArgs e)
{
SqlConnection baglan = new SqlConnection(baglanti);
baglan.Open();
if (radioButton1.IsChecked == true)
{
SqlCommand sql = new SqlCommand(“insert into tbl_kisiler(ad,soyad,yas,cinsiyet) values(‘”+textBox1.Text+”‘,'”+textBox2.Text+”‘, ‘”+textBox3.Text+”‘, ‘True’)”,baglan);
sql.ExecuteNonQuery();
}
else if (radioButton2.IsChecked == true)
{
SqlCommand sql = new SqlCommand(“insert into tbl_kisiler(ad,soyad,yas,cinsiyet) values(‘” + textBox1.Text + “‘,'” + textBox2.Text + “‘, ‘” + textBox3.Text + “‘, ‘False’)”, baglan);
sql.ExecuteNonQuery();
}
baglan.Close();
DataGridVeriYukle();
}

private void button2_Click(object sender, RoutedEventArgs e)
{
SqlConnection baglan = new SqlConnection(baglanti);
baglan.Open();
SqlCommand sql = new SqlCommand(“delete from tbl_kisiler where ad='”+textBox1.Text+”‘ “,baglan);
sql.ExecuteNonQuery();
baglan.Close();
DataGridVeriYukle();
}
}
}

From1.Cs ‘nin Kaynak Kodu ;

private void cikisToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1.ActiveForm.Close();
}

private void personelBilgileriToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 formiki = new Form2();
formiki.ShowDialog();
}

Projemiz kaydedilip, rebuild yapildiktan sonra calistiriyoruz. Asagida uygulamamizin calismis halini gormektesiniz.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Son olarak wpf ile tasarladigimiz bu arayuzu Microsoft Expression Blend ile biraz renklendirerek tasarlayalim ve projemize yeni haliyle blend sayesinde enjekte edelim. Projemizi Blend’te actiktan sonra Formumuz secili iken Properties penceresine geliriz ve buradan renklendirmeleri asagida ki gibi duzenleriz.

 

 

 

 

 

 

 

 

 

 

Ve iste projemizin en son hali de asagidaki gibidir…

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Etiketler: , , , , ,
Bulundugu Konu Etiketleri Visual Studio, Yazilim |

Lutfen Yorumlarinizi Burdan Ulastiriniz!...

You must be Kullanici Adiniz : to post a comment.

Istatistik

  • 1 Uye
  • 334 Yazi
  • 16 Yorum Var