Duyurular: 02 Aralık 2008, 03:39:05
Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun. *

Visual Basic & SQL (Recortdset Kullanımı)
Sayfa: [1]   Aşağı git
  Yazdır  

  Visual Basic & SQL (Recortdset Kullanımı)
Gönderen Mesaj
BY_DEM@N
System Root
*

KARMA: 5708
Online Online

Mesaj Sayısı: 4133



WWW
« : 18 Mayıs 2008, 18:29:07 »

Merhaba arkadaşlar. Bu yazıda sql ile ilgili yeni bir şeyler yazmayacağım. Aslında yaptığım internet bünyesindeki sql ile ilgili en gerekli bilgileri kendi anlatımım ve örneklerimle bir araya toplamak. SQL nedir ile kısaca başlayalım. SQL veri tabanı yönetim dilidir. İster ACESS ister MySQL (yada benzeri) olsun veri tabanı progr*****larını yönetme dilidir. Listeler, Kaydeder, Düzeltir, Siler, Karşılaştırır, Ararsınız. Özellikle arama özelliği o kadar iyidir ki programcıya yapacak pek bir şey kalmaz. Çok zorda değildir.

**Ben bu yazıda ACCESS veri tabanını kullanacağım


*** İlk önce bir Access veri tabanı oluşturalım. Adı veri.mdb olsun.
*** İçerisinde kayit adında bir tablo oluşturalım.
*** Tabloya 4 değişken gireceğiz.

id Otomatik Metin(ve birincil anahtar)
adi Metin
soyadi Metin
telefon Metin

*** Şimdi açıklamaları yapalım:

id : Neden otomatik metin ve birincil anahtar; Çünkü biz bu kayıda karışmayacağız. Her yeni kayıt yapıldığında ACCESS otomatik olarak buraya bir rakam atayacak ve birincil anahtar olduğu için aynı numaraya sahip bir başka kayıt olmayacak. Bu numara bize silme ve düzeltme işlemlerinde yarayacak.

adi, soyadi, telefon : Neden Metin olduğu ortada sanırım. Sayısal bir işlem yapmayacağız.

*** Çalışma alanımız C:\Belgelerim\ilksql klasörü olsun. Ve veri tabanımızı buraya koyalım.

*** Kayıt alanımızda şunlar kayıtlı olsun

kayit
id adi soyadi telefon
1 Şevket Bulamaz 05355555555
2 Özge Gölbaşı 05352552525
3 Çağrı Solakoğlu 05354212121
4 Emre Tokyay 05423454545
5 Altan Karakullukçu 05558898998
6 Programlama NoktaCom 05455617181

*** Şimdi kodlarımızı yapalım. Formumuza bir listbox ekleyelim. Adı listbox1. Form load olayına şunu yazalım.

Private Sub Form_Load()
On Local Error GoTo hata ‘program içerisinde hata olduğunda hata etiketine gönderiyoruz.
Set baglanti = New ADODB.Connection
baglanti.Open “Driver={Microsoft Access Driver (*.mdb)}; DBQ=” & App.Path & “\veri.mdb”
‘yukarıdaki 2 satır bizim veri tabanı ile bağlantı kurmamıza yarıyor.
‘app.path olayı programımızın da c:\belgelerim\ilksql klasöründe olduğunu anlatıyor.
‘yani programı nerede çalıştırırsak çalıştıralım program veri.mdb dosyasını yanında arayacak.

sql = “select adi,soyadi,telefon from kayit order by soyadi”
Set rs = New ADODB.Recordset
rs.Open sql, baglanti, 1, 3

‘yukarıdaki 3 satırda ise veri tabanı içindeki verilere ulaşmak için
‘ilgili tablo ile bağlantımızı kuruyoruz.
‘sql değişkenimize kayit tablosu içinden adi soyadi ve telefon değişkenlerini seçmesini
‘ve bunları soyadi sırasına göre dizmesini söyledik. Eğer ki en sona DESC yazsaydık
‘dizilimi z `den a `ya yani azalan sıraya göre yapacaktı.
‘sql bağlantı tiplerini program sonrasında etraflıca anlatacağım. Şimdilik bir fikrimiz
‘olması açısından olaya böyle başladık.

Dim adi, sadi, teli As String ‘şimdi 3 değişken tanımladık işi biraz uzattık
Do While Not rs.EOF ‘Kayıt sonu değilse veya boş değilse do loop arasındakileri yap
adi = rs(”adi”) ‘veri tabanındaki adi değişkeninin değerini adi değişkenine atadık
sadi = rs(”soyadi”) ‘veri tabanındaki soyadi değişkeninin değerini sadi değişkenine atadık
teli = rs(”telefon”) ‘veri tabanındaki telefon değişkeninin değerini telii değişkenine atadık
listbox1.AddItem adi & “ ” & sadi & “ ” & teli ‘ve bu değişkenleri ard arda listbox a ekledik
rs.MoveNext ‘Birsonraki kayıda geç
Loop ‘Do ifadesinin doğasını gerçekleştir.
GoTo kayitson ‘işlem bittiğinde kayıtson a git ve bitir.
hata: ‘hata etiketi
MsgBox “HATA OLUŞTU” & Chr(13) & Err ‘hata oluştu ise haber ver ve hata sebebini yaz
kayitson: ‘işlem bitti etiketi
End Sub

Eğer ki bir yazım yanlışı yapmadıysanız listbox içerisinde kayıtlarınızı görebilirsiniz.

Sql içerisindeki “select” deyimi bize listeleme ,düzenleme ve kayıt girişinde yarayacak. Ben işlemleri şimdilik recordset kullanarak yapıyorum bide bunu yapmanın sql ile yolu var.

Mesela yani kayıt eklemek için sql değişkeni şöyle olacak:

sql=”insert into kayit(adi,soyadi, telefon) values(’Mustafa’,'KESER’,'05055050505′)”

ve bu durumda hiç recordset açmamıza gerek kalmayacaktı.

sql = “select adi,soyadi,telefon from kayit order by soyadi”
Set rs = New ADODB.Recordset
rs.Open sql, baglanti, 1, 3

yerine

sql=”insert into kayit(adi,soyadi, telefon) values(’Mustafa’,'KESER’,'05055050505′)”
baglanti.execute(sql)

dememiz kayıt için yeterli olurdu.
Ancak recordset kullanarak kayıt eklemek şunların yapılmasını gerektiriyor.

Dim adi, sadi, teli as String
adi = “Mustafa”
sadi = “KESER”
teli = “05055050505”

Set baglanti = New ADODB.Connection
baglanti.Open “Driver={Microsoft Access Driver (*.mdb)}; DBQ=” & App.Path & “\veri.mdb”
sql = “select adi,soyadi,telefon from kayit order by soyadi”
Set rs = New ADODB.Recordset
rs.Open sql, baglanti, 1, 3
rs.AddNew
rs(“adi”) = adi
rs(“soyadi”) = sadi
rs(“telefon”) = teli
rs.Update

Recordset ile bir kayıt yaptık işte. Eğer ki textboxlardan veri alalım derseniz
rs.AddNew
rs(“adi”) = text1.text
rs(“soyadi”) = text2.text
rs(“telefon”) = text3.text
rs.Update

şeklinde bir düzenleme yapmanız yeterli olacaktır.

*** Şimdi sql’in en çok işe yaradığı yerlerden birine göz atalım

ben adı Mustafa olan kişinin telefonunu değiştirmek istiyorum. Önce recordsetsiz sonrada recordsetli bir yapalım.

sql=”update kayit set telefon=’05332226655′ where adi=’Mustafa’”
baglanti.execute(sql)

buradaki where komutu adı Mustafa olan herkesin telefon numaralarını değiştirir. İşte id burada işe yarayacak. Çünkü sadece bir tane id bir tane isime ait. Diyelim ki Bizim Mustafa’nın id si 15 olsun. Bu durumda komut,

sql=”update kayit set telefon=’05332226655′ where id=15″
baglanti.execute(sql)

olarak değişecektir.

15 numaralı kaydın telefon numarası değişti. Bir de recordset ile yapalım

Set baglanti = New ADODB.Connection
baglanti.Open “Driver={Microsoft Access Driver (*.mdb)}; DBQ=” & App.Path & “\veri.mdb”
sql = “select id,telefon from kayit where id = 15″
Set rs = New ADODB.Recordset
rs.Open sql, baglanti, 1, 3
rs(“telefon”) = “05332226655”
rs.Update

İşte bukadar basit. Değiştirme işlemini de bu şekilde yapıyoruz.
*** En kolayı ise silme işlemi.

sql=”delete from kayit where id=15″
baglanti.execute(sql)

işte bukadar. Veri tabanından 15 numaralı kaydı bir anda sildik. Bu komut için recordset kullanmıyoruz. Çünkü bir zorluk çıkarmıyor. Recordset kullanmanın amacı toplu kayıt, listeleme ve aramalarda yarıyor. Recordset kullanmasak yaparmıyız. Tabi ki yapabiliriz. Uygun döngülerle her şey yapılabilir. Yada tüm database i boşaltmak istersek ;

sql=”delete from kayit”
baglanti.execute(sql)

yazmamız yeterli. Veritabanı bomboş…
Recordset tanımlamadan kayıt, listeleme, değiştirme , silme yapmak çok daha hızlı ve masrafsız olur (zamandan, tabi ki sizin kodları yazma zamanınız.) ancak ben recordset in çok daha anlaşılır ve düzenli olduğuna inanıyorum. ( Belki en zaman alan şeyleri savunuyorum ancak aynı yoğurdu yediğimiz sürece her yiğidin farklı bir yoğurt yeme sitilinin olması fark etmiyor.)
İster recordsetli ister recordsetsiz, SQL siz bir programlama düşünülemez……
Logged


Register or Login
Bunu okumadan Forumda Herhangi Bir Konuya cvp Yazmayınız....


Sayfa: [1]   Yukarı git
  Yazdır  

 

Gitmek istediğiniz yer: