ADO Yöntemi
Daha önceki derslerimizde Adodc Nesnesi ile baglantılarımızı saglayıp Grid üzerinde çeşitli işlemler yapmıştık.
Bu defa Nesne olmaksızın Veritabanımıza baglanıcaz ve işlemlerimizi gerçekleştiricez
BAĞLANTI (CONNECTION) SAĞLAMAK
Öncelikle MDAC (Microsoft Data Access Components) makinemizde genellikle yüklü olur.
Makinemiz eger Windows 2000 ve üzeri ise mutlak suretle MDAC yüklüdür.
Tabi MDAC ‘ın hangi versiyonu yüklüdür onu benim kestirmem mümkün degil.
MDAC’ın 2.5 ile başlayan ve şuan 2.8 versiyonu bulunmaktadır. MDAC ın makinenizde enson hangi versiyonu var
bunu bilebilmeniz icin
2 türlü yöntem bulunmaktadır.
1-ODBC
2-Visualbasic Referanslar
1-ODBC ile ögrenmek için; Windows Başlat/Çalıştıra ODBCAD32 yazıp ENTER tuşlayınız.ve açılan pencerede
Driver yazan sekmeye gelerek En aşşagıda bulunan SQL SERVER yazan kısımda versiyon yazacaktır.
Örnegin Bende yazan 2.00.85.11177.Buda demek oluyorki sistemimde MDAC 2.8 yüklü.
2-Visualbasic Referanslara (References) seçelim.Referansları seçebilmek için
Project Menusunden References adlı seçenegi seçiniz. Ve Açılan pencerede
Microsoft ActiveX DataObject 2.5 2.6 2.7 2.8 enson olarak hangisi yüklü ise buda demek oluyorki sisteminizde
enson yüklü MDAC Versiyonu bulunmaktadır.
Visualbasic ile Accesse,MYSQL,veya MSSQLe baglantı saglayabilmek için Referanslardan enson yüklü olan
Mdac Versiyonu hangisi ise onu işaretleyiniz.
Projemizde en tepeye gelerek aşagıdaki cümleleri yazarak baglantımızı saglayalım
Dim cnn as new adodb.connection
‘Bu Cümle ile CNN adlı bir deger atayarak veritabanına baglantımızı saglayacagız.CNN in açılımı Connection dur.
Siz ister buna baglan diyin ister BaglantiYap diyin nederseniz diyin.
Dim rst as new adodb.recordset
‘Bu Cümle ile RST adlı bir deger atayarak veritabandaki kayıtlar üzerinde işlemler yapmamızı saglıyacaktır.
RST in açılımı Recordsettir.
Gelelim Baglantı Kodlarına ;
Öncelikle uyarılarda bulunayım arkadaşlar.Forum sitelerinde genellikle gördügüm birşey var,
oda bazı arkadaşların Her Butona Baglantı atamalarıdır. Buna hiç ama hiç gereksinim bulunmamaktadır.
Biz Baglantımızı Formumuzu LOAD ladıgımız an gerçekleştirecegiz ve birdaha baglantı saglamak için ugraşı vermeyecegiz.
Çünkü Baglantı birkere gerçekleştimi ? Evet gerçekleşti,nediye tekrar tekrar baglantı saglayalım dimi !…
Formumuzun Loadına aşagıdaki cümleleri yazalım
ACCESS Veritabanı İçin
Private Sub Form_Load()
cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\DB.mdb"
End Sub
Evet Şaşırdınız dimi ? Yıgınla Kodlar Componentler vsler ile baglantı saglattıran bazı arkadaşlar sizi bugüne kadar nekadar yormuşlar dimi ?
Baglantı kodumuz bukadar, Bizim burada yaptıgımız şey şu olmuştur, Projemizin çalıştıgı klasör içinde DB.mdb adlı access
veritabanına baglantımızı sagladık. Bitti Gitti bukadar işte.
MSSQL Veritabanı İçin
Private Sub Form_Load()
cnn.Open "Provider=SQLOLEDB.1;password=;Persist Security Info=True;User ID=sa;Initial Catalog=VeritabanıAdı;Data Source=SQLSERVER"
End Sub
Bu Kod ilede SQL Veritabanına baglantımızı aynı şekilde gerçekleştirebiliyoruz. Tek Farkımız sadece Veritabanımızın MSSQL olmasıdır.
Burada yapılan işlem SQLSERVERDE kullanıcı adı
Sa olan şifresi boş olan Veritabanı adı « VeritabanıAdı » olan ve SQL in kurulu oldugu makininde SQL server Saglayıcısının adının
SQLSERVER oldugu makineye baglantımızı gerçekleştirdik.
MYSQL Veritabanı için
MYSQL' bağlanmak için öncelikle MySQL Connector/ODBC 3.51 sürücüsünün ODBC'ye yüklü olması gerekir.
Bu sürücüyü http://dev.mysql.com/downloads/connector/odbc/3.51.html adresinden indiriniz
Cnn.open "Driver={MySQL ODBC 3.51 Driver}; Server=mysql_server_adresi; Port=3306; Option=3; Socket=; Stmt=; Database=veritabanı_adı; Uid=kullannıcı_adı; Pwd=Sifreniz;"
Baglantılarımız tamam olduguna göre artık kayıtlarımızla dans etmeye hazırız demektir.
Formumuza 1 adet MSHFlexgrid ( Microsoft Hierarchical Flex Grid Controls 6.0 ) diye geçmektedir, 1 Adet Buton 3 Adette Text koyalım.
MshFlexgridi yerleştirebilmek için CTRL + T yapınız ve çıkan ekrandan işleminizi gerçekleştiriniz.
Formumuza bu nesneleri yerleştirdikten sonra butonumuza çift clickleyerek aşagıdaki cümlemizi yazarak veritabanımıza ilk kaydımızı gerçekleştirelim.
ADO ile Kaydetme İşlemleri
rst.Open "select * from kisiler”, cnn, adOpenKeyset, adLockOptimistic
rst.AddNew
rst!adi_soyadi = Text1.Text
rst!adresi = Text2.Text
rst!telefonu = Text2.Text
rst.Update
MsgBox "İşlem Kaydedildi", vbInformation
rst.close
yazdıgımız bu kodları açıklamak gerekirse rst.open diyerek “kisiler” tablosunu açıyoruz
ve bu tablodaki adi_soyadi adresi ve telefonu adlı alanlara bilgi kaydedecegimizi bildiriyoruz.Bunuda rst.addnew
yani yeni kayıt ekle diyerek yapıyoruz. Yeni kayıt ekle nereye ekle ? rst!adi_soyadi sahasına rst!adresi sahasına ve
rst!telefonu sahasına diyerek kayıtlarımızı ekliyoruz. Ve ardından kayıtlarımızı ekledikten sonra tablomuzu UPDATE ederek
bir msgbox kutusu ile işlemin kaydedildigini kullanıcıya bildiriyoruz. İşlemimiz bittigine gore artık rst mizin açık kalmasına gerek yoktur.
Bunuda rst.close ile kapatıyoruz. Kaydetme işlemini sizzler dahada geliştirebilirsiniz içeride kayıt varsa üzerine yazayımmı yoksa ne yapayım gibi.
Ado ile Silme İşlemleri
Formumuza 1 adet daha dügme yerleştirelim ve adınıda Sil diyelim.Formumuza daha önce yerleştirmiş oldugumuz
MSHFlexgrid üzerinden kayıtlarımızı seçerek silme işlemi yapabiliriz. Bunun için aşagıdaki cümleyi kullanabiliriz
If Trim(MshFlexGrid1.TextMatrix(MshFlexGrid1.Row, 1)) <> "" Then
If MsgBox("Kaydı Silmek İstiyormusunuz ? ", 292, "Technology") = vbYes Then
SQL = "DELETE * from kisiler where ID= " & MshFlexGrid1.TextMatrix(MshFlexGrid1.Row, 1)
cnn.Execute SQL
MsgBox "Kayıt Silinmiştir", vbCritical
End If
Burada yaptıgımız işlem ise kisiler tablosunda ID adlı bir alanımız mevcuttu.Flex üzerinde gözüken herhangi bir satırı seçtik ve
sil dügmesine bastıgımızda bize kaydı silip silmeyecegimizi sordu. Eger Evet dersek Kaydı silecek hayır dersek kaydı silmeyecek.
Bunu neye gore silmekte ? Flexgrid üzerindeki 1.satırda ID yi gösterdik, ve biz secimimizi yaptıgımız an silmesi gereken satır
hangisi ise o satırdaki ID degeri ne ise o satırı siliyoruz.
Ado ile Listeleme İşlemleri
Asagıdaki Kayitlar adlı procedure yi 1 defa yaratıyorum. Kayıtları nezaman listeletmek istiyor isem oraya
Kayitlar yazdıgım an kayitlarim tekrarlanıyor benim icin.
Örnegin Kayıtları sildigimiz kodlardaki
cnn.Execute SQL
MsgBox "Kayıt Silinmiştir", vbCritical
Kayitlar
End If
Der isem silme işlemi bittikten sonra kayitlarimi tekrarlayarak ekranıma getirecektir.
Eger Kaydetme işleminden sonra yapmak istersem
rst.Update
MsgBox "İşlem Kaydedildi", vbInformation
Kayitlar
rst.close
Eger Hayır ben sadece bir butona yerleştireyim tüm kayıtları öyle göstereyim der isem
Private Sub Command1_Click()
Kayitlar
End Sub
Yazmam yeterli olacaktır.
Public Sub Kayitlar()
rst.Open "select * from kisiler", cnn, adOpenForwardOnly, adLockReadOnly
Satır = 1
Do Until rst.EOF = True
MshFlexGrid1.TextMatrix(Satır, 0) = Satır
MshFlexGrid1.TextMatrix(Satır, 1) = Trim(rst!ID)
MshFlexGrid1.TextMatrix(Satır, 2) = Trim(rst!adi_soyadi)
MshFlexGrid1.TextMatrix(Satır, 3) = Trim(rst!adresi)
MshFlexGrid1.TextMatrix(Satır, 4) = Trim(rst!telefonu)
Satır = Satır + 1
MshFlexGrid1.Rows = Satır + 1
rst.MoveNext
Loop
rst.Close
End Sub
Ado yöntemi ile ilgili bir sonraki Makalede farklı konulara deginerek nesnesiz programlama ile programlarınıza nasıl sürat kazandırabilirsiniz
onları işleyecegiz.
