17 Mayıs 2015 Pazar

Odev Sunum Paylasımi

1.AŞAMA: Windows Application Projesi Oluşturmak
Öncelikle Visual Studio programını çalıştırıp yeni bir Windows Application projesi ekleyiniz. Bunun için New Project veya Ctrl+Shift+N klavye kısayolu ile aşağıdaki pencereyi açıp proje ismini sqlBaglantisi olarak değiştiriniz. 
OK butonuna basınca projemiz oluşturulur. Projeye otomatik olarak Form öğesi eklenir.

2.AŞAMA:SQL veritabanı oluşturmak
Projemiz oluştuktan sonra yapacağımız ilk iş veritabanı oluşturmak. Bunun için projemizin Solution Explorer penceresine gelelim ve aşağıdaki gibi projemize sağ tıklayalım. Açılan seçenekler arasından Add --> New Item kısayolunu tıklayınız. Aşağıdaki gibi bir pencere açılacak. Bu pencereden Data menüsüne girip Local Database seçeniğini seçip veritabanına ogrenci_db ismini veriniz.
Add butonuna tıkladığımızda aşağıdaki sayfa açılır.


Next butonuna tıklayıp devam ettiğinizde aşağıdaki pencere açılır.









Finish butonuna tıkladığımızda veritabanı oluşturma işlemi sona erer. Artık ogrenci_db isimli bir adet veritabanımız var. Şimdi gelelim ogrenci_db içerisinde bir adet tablo oluşturalım. Tablo adı: ogr_bilgileri_tbl olsun.
Öncelikle view --> Server Explorer yolunu izleyerek Server Explorer penceresini açalım. Aşağıdaki gibi görünmesi gerekir.
Bu şekilde görünmüyorsa bile soldaki ok tuşlarına tıkladığınızda aşağıdaki resimdeki görünümü alır. 
Daha sonra Tables seçeneğine sağ tıklayıp Create Table seçeneğini seçelim. Bu işlemden sonra aşağıdaki gibi bir pencere ile karşılaşırsınız.

Bu pencerede biz tablonun alanlarını ekleyeceğiz. Sizde yandaki gibi alanları ekleyiniz.

OK tuşuna tıklayınca Sever Explorer penceresi aşağıdaki gibi olur.

ogr_bilgileri_tbl tablosuna sağ tıklayıp Show Table Data seçeneğini seçtiğimizde tablomuz aşağıdaki gibi görünür. Fakat bu haliyle tablomuz boştur. Siz de bu tabloyu doldurmalısınız.


3.AŞAMA: Form tasarımı
Daha önce projemizi oluşturduğumuzda otomatik olarak bir form eklenmiş olur. Biz form içine Toolbox araç menüsünden DataGridView nesnesini ekleyelim. Formumuz yandaki gibi olur. 

DataGridView companent'ini seçip Properties menüsünden AutoSizeColumnsMode özelliğini Fill olarak değiştiriniz. Bu şekilde tablo içeriği grid nesnesini tamamen dolduracak şekilde yerleştirilir.



4.AŞAMA: SQL bağlantısı için System.Data.SqlServerCe Kütüphanesini projeye eklemek
Bu aşamadan sonra kodlarımıza geçeceğiz. Fakat kod yazmadan önce yapmamız gereken son bir işlem daha var. Bir SQL bağlantısı yapmalı. SqlServerCe kütüphanesini kullanmanızı tavsiye ederim. Zira bu kütüphane yerel bilgisayarda sql bağlantısı yapmak için tasarlanmıştır. Bunu eklememizin temel amacı bir SQL Connection nesnesi tanımlamak içindir. Ancak bu şekilde bir bağlantı nesnesi oluşturabiliriz. Bu referansı eklemek için Solution Explorer penceresinden projeye sağ tıklayıp, Add Reference seçeneğini tıklayınız. Aşağıdaki gibi bir pencere açılacak. Burdaki seçeneklerden System.Data.SqlServerCe referansını seçip projeye ekleyiniz.


Yine kod yazmadan önce mutlaka ama mutlaka proje klasörüne girip ogrenci_db.sdf veritabanını kopyalayıp Debug klasörü içine atmayı unutmayınız. Bu özellikle veritabanı path yani yolunu belirtirken çok işimize yarayacak. Debug klasörü yandaki gibi olmalıdır.




5.AŞAMA: Sql Veritabanı Bağlantısını yapmak. (Kod)
Bu aşamada kodlarımızı yazacağız. Öncelikle Form nesnesine çift tıklayınız. İlk Kodumuz aşağıdaki kod olacak.
using System.Data.SqlServerCe;
Bu kodun mutlaka programın baş kısmına yazılması zaruridir. Zira eklediğimiz referans bu haliyle işe yaramaz. Bu referansa ait sınıf ve metotlara erişebilmek için mutlak using ifadesiyle beraber projeye eklenmesi gerekir. using ifadesiyle beraber eklenen bir kütüphane proje içerisinde kullanıma hazır hale gelir. 
Gelelim Sql Connection nesnesi oluşturmaya bunun için aşağıdaki kodu kullanırız.
        SqlCeConnection baglanti_nesnesi = new SqlCeConnection();
Bu şekilde bir kullanım ile bağlantı nesnesini oluşturmuş oluruz.  SqlCeConnection sınıfından baglanti_nesnesi isimli bir bağlantı nesnesi oluşturduk.
Gelelim oluşturduğumuz veritabanı ile bağlantı nesnesini beraber tanımlamaya
baglanti_nesnesi.ConnectionString = "Data Source =" +Application.StartupPath + "\\ogrenci_db.sdf;";
Bu şekilde belirtilen yoldaki veritabanı ile bir köprü yani link kurulmuş olur. Bir önceki kod ile  oluşturduğumuz bağlantı nesnesi bu veritabanı ile bağlantı işlemini gerçekleştirecek. Application.StartupPath ile veritabanı yolu yani path özelliği otomatik olarak algılanır. Fakat bunun çalışabilmesi için veritabanı bahsedilen debug klasörüne eklenmeli.
Bu işlemlerden sonra artık veritabanı ile bağlantı işlemi kurulmuş olur. Bu bağlantıyı aktifleştirmek için;
baglanti_nesnesi.Open(); 
kodu kullanılır. Bu her veritabanı bağlantı işleminde yapılması gereken bir işlemdir. Ancak bu şekilde bağlantı açılmış olur.
Bundan sonra eğer herhangi bir sorun yok ise veritabanı ile bağlantı işlemi yapılmış olur. Bunun için kullanıcıyı bilgilendirmek gerekir.
MessageBox.Show("Veritabanı Açık");
Bu kod ile kullanıcı veritabanı bağlantısı hakkında bilgilendirilir.
Yapılacak herhangi bir işlem var ise bundan sonra yapılabilir. Bu işlemler kayıt ekleme, kayıt silme veya kayıt güncelleme olabilir. Tüm bu işlemleri yaptıktan sonra açılan bağlantı mutlaka kapatılmalıdır. Bunun için
 baglanti_nesnesi.Close();
kodunu kullanırız.
Şimdi kodumuzun tamamını  yazalım.
-----------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
/*eğer yerel bir veritabanı için bağlantı işlemi yapılacak ise 
en kullanışlı kütüphanemiz SqlServerCe kütüphanesidir.
Bu kütüphane içindeki sınıflara erişebilmek için aşağıdaki kodu
yazıp programın using kısmına aşağıdaki gibi yapıştırınız.
Bu şekilde bu kütüphane içindeki sınıflara erişebiliriz.*/

using System.Data.SqlServerCe;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace sqlBaglantisi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/*veritabanı bağlantısı için öncelikle nesnemizi oluşturalım.
aşağıdaki kod ile sql bağlantı nesnemizi oluşturduk*/
SqlCeConnection baglanti_nesnesi = new SqlCeConnection();

private void Form1_Load(object sender, EventArgs e)
{
/*aşağıdaki kod ile bağlantı nesnesinin bağlanacağı veritabanı
adres yolu connectionstring özelliği ile belirlenmiştir. Bu aşamdan sonra
sadece veritabanı yolu ve veritabanı adını yazmak ile işlemi halletmiş oluruz.*/
baglanti_nesnesi.ConnectionString = "Data Source =" + Application.StartupPath + "\\ogrenci_db.sdf;";

/*veritabanı temel mantığında var olan bağlantı nesnesi mutlaka açılmalıdır. aşağıdaki kodu yazmadan veritabanı içeriğine erişmek mümkün değildir.  Bunun için open metodu kullanılır*/
baglanti_nesnesi.Open();

/*buraya kadar eğer kodlarımızda bir sorun yok ise 
aşağıdaki gibi kullanıcıya mesaj ile bilgi verebiliriz.*/
MessageBox.Show("Veritabanı Açık");

/*açılması gereken her bağlantı nesnesi mutlaka kapatılmalıdır.*/
baglanti_nesnesi.Close();

}
}
}


6.AŞAMA:Tablodaki Tüm bilgileri Grid Nesnesine Eklemek
Bunun için öncelikle sanal bir tablo oluşturup tüm tabloyu buraya aktarmak gerekiyor. Bunun için DataSet sınıfını kullanırız. Kodumuz aşağıdaki gibidir.
DataSet ds1 = new DataSet();
Bu şekilde ds1 isminde bir sanal tablo oluşturmuş oluruz.
Bundan sonra veritabanı içindeki tablonun tüm kayıtlarını seçmek için sql cümlemizi yazarız. Bu ifade aşağıdaki gibidir;
string sql = "SELECT * From ogr_bilgileri_tbl";
Bu ifade ile yani select deyimi ile tablodaki tüm kayıtların seçilmesini istiyoruz.
Bu şekilde bir ifade tek başına işe yaramaz. Bu ifadenin bir kod olarak yorumlanması için;
SqlCeDataAdapter adap = new SqlCeDataAdapter(sql, baglanti_nesnesi);
Kodunu kullanırız. Bu kullanım ile bağlantı nesnesi ve sql ifadesi beraber olarak işlenir. Ve bir komut olarak yorumlanır.
DataAdapter ile tablo verileri okunur. Bundan sonra adap içindeki veriler ds1 isimli sanal tabloya aktarılır. Bunun için
adap.Fill(ds1);
kodunu kullanırız. Son aşama ise ds1 sanal tablosunun grid nesnesi ile ilişkilendirilmesidir.
dataGridView1.DataSource = ds1.Tables[0];
bu kod ile tablodaki tüm veriler DataGridView nesnesinde gösterilmiş olur.
Şimdi kodumuzu bir bütün olarak görelim.
-----------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
/*eğer yerel bir veritabanı için bağlantı işlemi yapılacak ise 
en kullanışlı kütüphanemiz SqlServerCe kütüphanesidir.
Bu kütüphane içindeki sınıflara erişebilmek için aşağıdaki kodu
yazıp programın using kısmına aşağıdaki gibi yapıştırınız.
Bu şekilde bu kütüphane içindeki sınıflara erişebiliriz.*/ 

using System.Data.SqlServerCe;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace sqlBaglantisi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/*veritabanı bağlantısı için öncelikle nesnemizi oluşturalım.
aşağıdaki kod ile sql bağlantı nesnemizi oluşturduk*/
SqlCeConnection baglanti_nesnesi = new SqlCeConnection();

private void Form1_Load(object sender, EventArgs e)
{
/*aşağıdaki kod ile bağlantı nesnesinin bağlanacağı veritabanı
adres yolu connectionstring özelliği ile belirlenmiştir. Bu aşamdan sonra
sadece veritabanı yolu ve veritabanı adını yazmak ile işlemi halletmiş oluruz.*/
baglanti_nesnesi.ConnectionString = "Data Source =" + Application.StartupPath + "\\ogrenci_db.sdf;";

/*veritabanı temel mantığında var olan bağlantı nesnesi mutlaka açılmalıdır. aşağıdaki kodu yazmadan veritabanı içeriğine erişmek mümkün değildir.  Bunun için open metodu kullanılır*/
baglanti_nesnesi.Open();

/*buraya kadar eğer kodlarımızda bir sorun yok ise 
aşağıdaki gibi kullanıcıya mesaj ile bilgi verebiliriz.*/
MessageBox.Show("Veritabanı Açık");

/*Amacımız veritabanı içinde bulunan ogr_bilgi tablosundaki
öğrenci bilgilerini datagridview içinde göstermektir.
bunun için öncelikle sanal bir veritabanı oluşturmamız gerekiyor.*/
DataSet ds1 = new DataSet();

/*ogr_bilgi tablosundaki tüm içeriklere erişmek için
select sql deyimini kullanırız.*/
string sql = "SELECT * From ogr_bilgileri_tbl";

/*bu şekilde yazılan bir sql ifadesi hiçbir işlem yapamaz.
bunun bir komut olarak yorumlanması gerekir. Bunun için aşağıdaki
kodumuz ile hem sql cümlesi icra edilir
hemde bağlantı nesnesi ile ilişkilendirilir. */
SqlCeDataAdapter adap = new SqlCeDataAdapter(sql, baglanti_nesnesi); 

/*oluşturuduğumuz bu dataadapter nesnesini aşağıdaki gibi fill koduyla
ds1 yani sanal tablo ile doldurmuş oluruz.*/
adap.Fill(ds1);


/*bu kodumuz ile datagrid elementinin datasource yani veriyolu koduyla
gösterilmek istenen tablonun bilgisi atanır. Biz bu kod ile
ds1 dataset içindeki tabloyu olduğu gibi buraya aktarmış olduk.
*/
dataGridView1.DataSource = ds1.Tables[0];


/*açılması gereken her bağlantı nesnesi mutlaka kapatılmalıdır.*/
baglanti_nesnesi.Close();


}
}
}

Kodun çalıştırılması sonucu form görünümü yandaki gibi olur.
Görüldüğü üzere tablodaki tüm kayıtlar grid nesnesine eklenmiştir.