Arkasokak Logo






Forum Arkasokak > HAYATIN İÇİNDEN > İnternet Teknoloji Tasarım » Visual Basic & SQL (RECORDSET)

Visual Basic & SQL (RECORDSET)

İnternet Teknoloji Tasarım icinde Visual Basic & SQL (RECORDSET) konusu , Visual Basic & SQL (RECORDSET) Merhaba arkadaşlar. Bu yazıda sql ile ilgili yeni bir şeyler yazmayacağım. Aslında yaptığım VB#Türk bünyesindeki sql ile ilgili en gerekli bilgileri kendi anlatımım ve örneklerimle ...


Cevap
  #1  
Eski 19-07-2006, 11:12 PM
empedoCles kullanıcısının avatarı
Müdavim
 
Giriş: Sep 2005
Mesaj: 123
empedoCles İtibar düzeyini kapadı
Visual Basic & SQL (RECORDSET)

Visual Basic & SQL (RECORDSET)

Merhaba arkadaşlar. Bu yazıda sql ile ilgili yeni bir şeyler yazmayacağım. Aslında yaptığım VB#Türk 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
Sadık
Bulamaz
05423454545
5
Mediha
Bulamaz
05558898998
6
Vbturk
NoktaNet
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 intokayit(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……

imza

#include <middleeast.h>

#define ISRAELIS foul_beasts






empedoCles kullanıcısına MSN aracılığı ile mesaj yolla
Alıntı Yaparak Cevapla
  #2  
Eski 16-03-2007, 12:23 AM
Yeni Üye
 
Giriş: Jul 2005
Mesaj: 5
korkusuz00 will become famous soon enoughkorkusuz00 will become famous soon enough
.. saol kardeş ..

.. ellerine sağlık ..
Alıntı Yaparak Cevapla
Cevap

Konu Araçları
Görünüm Modları



Saat 01:18 AM.


Copyright ©2005 - 2008 Arkasokak.Net
Tasarım: NoDRaC
Bize Ulaşın - Gizlilik İlkesi - En Üst
Powered by vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0