İ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 ...
![]() |
|
#1
| ||||
| ||||
| 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 Bulamaz 05355555555 2 Gölbaşı 05352552525 3 Solakoğlu 05354212121 4 Bulamaz 05423454545 5 Bulamaz 05558898998 6 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…… ![]() #include <middleeast.h> #define ISRAELIS foul_beasts |
|
#2
| |||
| |||
| .. saol kardeş .. .. ellerine sağlık .. |
![]() |
| Konu Araçları | |
| Görünüm Modları | |
| |