Uploaded by User13895

Veritabani1

advertisement
C Sharp /Veri tabanı işlemleri
C#'ta veri tabanı işlemleri System.Data isim alanındaki ve bu isim alanının altındaki alt isim
alanlarındaki türlerle yapılır.
System.Data isim alanına programcılar ADO.NET ismini vermişlerdir.
Yani bir yerde ADO.NET duyarsanız aslında System.Data isim alanından bahsetmektedir. System.Data
isim alanıyla veri tabanlarına iki şekilde erişilebilir.
1. MSSQL veri tabanlarına direkt erişim.
2. OLEDB (Object Linking And Embedding DataBase) protokolünü destekleyen veri tabanlarına OLEDB
protokolü ile erişim.
Bağlanacağınız veri tabanı MSSQL ise daha hızlı olması açısından birinci yöntemi seçmeniz
tavsiye edilir. Ancak daha genel bir yol olduğundan bu bölümde ikinci yöntem üzerinde daha çok
duracağız. Popüler tüm veri tabanları OLEDB protokolünü desteklemektedir. OLEDB protokolüyle
MSSQL veri tabanlarına da erişebilirsiniz. Ayrıca OLEDB protokolüyle Access dosyalarına da bir veri
tabanıymış gibi bağlanabilirsiniz.
C Sharp /Veri tabanı işlemleri
System.Data Veri tabanlarındaki verilerle çalışmak için gerekli temel türler bu isim
alanındadır. Veri tabanlarına bağlanmak için gerekli türler bu isim alanında değildir.
System.Data.OleDb OLEDB protokolünü destekleyen veri tabanlarına bağlanmak için gerekli
türler barındırır.
System.Data.SqlClient OLEDB kullanmadan direkt MSSQL veri tabanlarına bağlanmak için
gerekli türler barındırır.
System.Data.SqlTypes MSSQL veri tabanlarındaki veri türlerini içerir. Tabii ki veri
tabanından veri çekerken veya veri tabanına veri kaydederken C#'a özgü veri türlerini
(string, int, ...) kullanabiliriz.
Ancak MSSQL'e özgü veri türlerini kullanmamız bize artı performans sağlar.
Microsoft Access Veri tabanı oluşturma
Not: 791 – 798 nolu sayfalara bakınız.
Microsoft Access Veri tabanı oluşturma
Access Veri Tabanına Erişim için kullanılabilecek veri tabanı nesneleri şunlardır;
• OleDBConnection Nesnesi : Bağlantı açmak ve kapatmak için kullanılan nesnedir.
• OleDBCommand Nesnesi : Veri Tabanı üzerinde SQL deyimlerini çalıştırmak için kullanılan
nesnedir. Select, Insert, Update ve Delete gibi SQL deyimleri bu nesne üzerinde çalıştırılabilir.
• OleDbDataAdapter : Connected ve Disconned (bağlantılı ve bağlantısız) özelliği ile veriler arasında
köprü görevi görür. Veri tabanından çekilen veriyi DataSet’e aktarmak ya da DataSet’te
güncellenmiş veriyi veritabanına aktarmada kullanılır.
• DataReader: Veri Tabanından kayıt çekmek için kullanılır. Kayıtlar OleDBCommand nesnesinin
ExecuteReader metodu ile DataReader’a aktarılır. Bu nesne çekilen veriler sırasıyla okunabilir.
• DataSet:Veri tabanından bağlantısız olarak çalışan bir nesnedir. OleDbDataAdapter ile veri
tabanından çekilen veriler DataSet içerisinde tablolar çeklinde saklanır. DataSet’ deki veriler
üzerinde güncellemeler yapıldıktan sonra OleDbDataAdapter ile tekrar veri tabanına aktarılır.
DataSet; DataTable, DataColumn, DataRow ve DataRelation nesnelerinden oluşur.
C Sharp /Uygulama Form oluşturma
C Sharp / Veri tabanına bağlanma
Access 2010 ve sonrası veri tabanına erişim sağlamak için Ofis 2010 yada
Microsoft Access Database Engine 2010 yüklü olması gerekir.
using System.Data;
using System.Data.OleDb;
OleDbConnection baglanti = new
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
Application.StartupPath + "/sozluk.accdb");
OleDbCommand komut =new OleDbCommand();
string deger;
Application.StartupPath : Programın çalıştığı klasör yolunu verir.
OleDbConnection : Bağlantı açmak kapatmak için kullanılan nesnedir.
OleDbCommand: Veri tabanı üzerinde SQL deyimleri çalıştırmak için
kullanılan nesnedir.
C Sharp / Veri tabanına bağlanma
OLEDBCOMMAND : Veri Tabanı ile ilgili kullanılan sorguları çalıştırmak için
kullanılır. Komutları çalıştırmak için 4 çeşit Execute metoduna sahiptir.
• ExecuteReader : Yürütülen komut sonrasında geriye DataReader nesnesi
döndürür.
• ExecuteNonQuery: Ekleme, Silme ve Güncelleme gibi sorgulardan etkilenen
satır sayısını geriye döndürür.
• ExecuteScalar: Bu metod geriye tek bir değer döndüren sorgular için kullanılır.
Bu değer kayıt sayısı, bir alanın değeri gibi değerler olabilir.
• ExecuteXMLReader: Yürütülen komut sonrasında geriye XML Reader Nesnesi
döndürülür.
KULLANICI GİRİŞ FORMU KODU:
private void btnTamam_Click(object sender, EventArgs e)
{
if (baglanti.State == ConnectionState.Closed)
baglanti.Open();
komut = new OleDbCommand("select * from sifre where sifre='" + txtSifre.Text + "' ",
baglanti);
try
{
deger = komut.ExecuteScalar().ToString();
if (Convert.ToInt32(deger) == 1)
{
MessageBox.Show("Şifre doğru");
baglanti.Close(); this.Hide();
Form2 frm2 = new Form2();
frm2.Show();
}else
{
MessageBox.Show("Şifre yanlış");
baglanti.Close();
}
}
catch { MessageBox.Show("HATA OLUŞTU"); }
}
FORM2 LOAD KODU:
private void Form2_Load(object sender, EventArgs e)
{
if ((baglantı.State == ConnectionState.Closed)) baglantı.Open();
komut = new OleDbCommand("select * from sozcukler ", baglantı);
OleDbDataReader reader = komut.ExecuteReader(); reader.Read();
if (reader.HasRows) {
txt_turkce.Text = reader["turkce"].ToString();
txt_ingilizce.Text = reader.GetString(1).ToString(); }
adaptor.SelectCommand
=
new
OleDbCommand("select
ingilizce,turkce
from
sozcukler ", baglantı);
adaptor.Fill(ds); dataGridView1.DataSource = ds.Tables[0];
komut = new OleDbCommand("Select Count(*) From sozcukler", baglantı);
lblKayıtSayısı.Text = "Veritabanında " + (int)komut.ExecuteScalar() + " tane
kelime var.";
baglantı.Close();
}
FORM2 KAYIT EKLEME KODU:
private void btnEkle_Click(object sender, EventArgs e)
{
try {
DataSet ds = new DataSet();
if (baglantı.State == ConnectionState.Closed) baglantı.Open();
ds.Clear();
OleDbCommand
komut
=
new
OleDbCommand("insert
into
sozcukler
(ingilizce,turkce) Values ('" + txt_ingilizce.Text + "','" + txt_turkce.Text + "')",
baglantı);
komut.ExecuteNonQuery(); dataGridView1.Update();
baglantı.Close();
MessageBox.Show("Kayıt Eklendi!");
}
catch (Exception ex){
MessageBox.Show(ex.Message);
baglantı.Close();}
}
FORM2 KAYIT SİLME KODU:
private void btnSil_Click(object sender, EventArgs e)
{
try {
DataSet ds = new DataSet();
if (baglantı.State == ConnectionState.Closed) baglantı.Open();
ds.Clear();
OleDbCommand
komut
=
new
OleDbCommand("delete
from
sozcukler
Where
txt_ingilizce.Text + "'", baglantı);
komut.ExecuteNonQuery(); dataGridView1.Update(); dataGridView1.Refresh();
baglantı.Close();
MessageBox.Show("Kayıt Silindi!");
}
catch (Exception ex){
MessageBox.Show(ex.Message);
baglantı.Close();}
}
ingilizce='"
+
FORM2 KAYIT GÜNCELLEME KODU:
private void btnGuncelle_Click(object sender, EventArgs e)
{
try {
DataSet ds = new DataSet();
if (baglantı.State == ConnectionState.Closed) baglantı.Open();
ds.Clear();
OleDbCommand
komut
txt_ingilizce.Text
+
=
"',
new
OleDbCommand("update
turkce='"
+
sozcukler
txt_turkce.Text
+
"'
txt_ingilizce.Text + "'", baglantı);
komut.ExecuteNonQuery(); dataGridView1.Update(); baglantı.Close();
MessageBox.Show("Kayıt Güncellendi!");
}
catch (Exception ex){
MessageBox.Show(ex.Message);
baglantı.Close();}
}
set
Where
ingilizce='"
ingilizce='"
+
+
FORM2 dataGridView1 KODU:
private void dataGridView1_CellClick(object sender,
DataGridViewCellEventArgs e)
{
int satirno;
satirno = e.RowIndex;
txt_ingilizce.Text = dataGridView1.Rows[satirno].Cells[0].Value.ToString();
txt_turkce.Text = dataGridView1.Rows[satirno].Cells[1].Value.ToString();
}
Download