Fatmagül İBİŞOĞLU
17/01/2011
İÇİNDEKİLER
Sayfa
1.ADO.NET 3
2.ADO.NET UYGULAMALARI 6
2.1.2. Kodlama 7
2.2.2. Kodlama 10
KAYNAK 11
2
1. ADO.NET
1
ADO: ActiveX Data Object
3
SQL’e yapılan bağlantılar dosyanın bulunduğu path (adres) ile olacaktır.
Programınızda bir SQL bağlantısı gerçekleştirecekseniz:
using System.Data.SqlClient;
kütüphanesini eklemelisiniz. Aksi takdirde yazdığınız kodlar çalışmayacaktır.
Component paletinde bulunan kontrollerin özelliklerinden bazılarının ne
işe yaradığı aşağıda açıklanmaktadır.
SqlConnection: SQL Server makinesine bağlanılacaksa bağlantı bu
kontrol sayesinde gerçekleştirilebilir.
SqlCommand: SQL Server makinesindeki tablolara komut göndermek
(ilişki yaratmak için vs.) kullanılır.
Windows Forms üzerinde veritabanıyla işlem yapabilmek için izlenmesi
gereken adımlar aşağıdaki şekilde sıralanabilmektedir:
1. Hedef veritabanına bağlantı kurulması;
2. Kurulan bağlantının açılması;
3. Yürütülmesi gereken T-SQl komutunun çalıştırılması;
4. İşlemden sonra dönen sonucun alınması ve sonuca göre hareket
edilmesi;
5. İşlemler bittikten sonra bağlantının kapatılması.
4
1.3. T-SQL Sonuçları ve SqlCommand Tipleri
T-SQL Sonuçları
(Execute)
Rows Effected
5
.ExecuteScalar(), T-SQL’de Select Count({Sütun Adı}) From {Tablo Adı}
vb. gibi yazılan bir komudun derlenmesi sonucunda dönecek birim veri (örneğin,
isim, fiyat, yaş, … ) için kullanılmaktadır. Değişik tiplerde sonuç verdiğinden
dolayı object tipindedir.
.ExecuteReader(), Select {Sütun Adı1},{Sütun Adı2}, … From {Tablo
Adı} gibi bir T-SQL komutunun derlenmesi sonucu elde edilecek tablo için
kullanılmaktadır.
2. ADO.NET UYGULAMALARI
Uygulamaya bir adet form eklenip; formun üzerine iki adet buton kontrolü
yerleştirilsin (Bkz. Şekil 2.1). Bu butonlardan ilkinin text özelliğine “Bağlan”,
ikincisinin text özelliğine ise “Bağlantıyı Kapat” yazılsın. Bu tasarım veritabanı
bağlantısını açıp kapatmanın nasıl gerçekleştiğini gözlemlemek için yeterlidir.
6
Şekil 2.1. Veritabanına bağlantı açma ve kapatma için form tasarımı
2.1.2. Kodlama
SqlConnection conn =
new SqlConnection("Server=.;Database=StokTakip;Integrated
Security=true");
7
2.2. SQL Command
8
Şekil 2.3. StokTakip veritabanı, Kullanıcılar tablosu için "Güncelle" formu
9
2.2.2. Kodlama
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Sample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
comm.Parameters.AddWithValue("@Ad", txtAd.Text);
comm.Parameters.AddWithValue("@Soyad",
txtSoyad.Text);
10
comm.Parameters.AddWithValue("@Email",
txtEmail.Text);
comm.Parameters.AddWithValue("@Sifre",
txtSifre.Text);
comm.Parameters.AddWithValue("@Yas",
numericUpDown1.Value);
conn.Open();
int EtkilenenSatirSayisi =
comm.ExecuteNonQuery();
conn.Close();
if (EtkilenenSatirSayisi > 0)
MessageBox.Show("Kayıt yapıldı.");
else
MessageBox.Show("Bir hata var!");
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Sample
{
11
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs
e)
{
SqlConnection conn = new
SqlConnection("Server=.;Database=StokTakip;Integrated
Security=true");
SqlCommand comm = new SqlCommand("Update
Kullanicilar Set
Ad=@Ad,Soyad=@Soyad,Email=@Email,Sifre=@Sifre,Yas=@Yas Where
KullaniciID=@ID", conn);
comm.Parameters.AddWithValue("@Ad", txtAd.Text);
comm.Parameters.AddWithValue("@Soyad",
txtSoyad.Text);
comm.Parameters.AddWithValue("@Email",
txtEmail.Text);
comm.Parameters.AddWithValue("@Sifre",
txtSifre.Text);
comm.Parameters.AddWithValue("@Yas",
numericUpDown1.Value);
comm.Parameters.AddWithValue("@ID",
textBox1.Text);
conn.Open();
int EtkilenenSatirSayisi =
comm.ExecuteNonQuery();
conn.Close();
if (EtkilenenSatirSayisi > 0)
MessageBox.Show("Kayıt yapıldı.");
else
MessageBox.Show("Bir hata var!");
}
private void Form2_Load(object sender, EventArgs e)
{
}
}
}
12
c. Kullanıcılar Tablosu İçin Sil Komutu
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Sample
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new
SqlConnection("Server=.;Database=StokTakip;Integrated
Security=true");
SqlCommand comm = new SqlCommand("Delete From
Kullanicilar Where KullaniciID=@ID", conn);
comm.Parameters.AddWithValue("@ID", textBox1.Text);
conn.Open();
int EtkilenenSatirSayisi = comm.ExecuteNonQuery();
conn.Close();
if (EtkilenenSatirSayisi > 0)
MessageBox.Show("Kayıt silindi.");
else
MessageBox.Show("Bir hata var!");
}
}}
13
KAYNAK
14