Site Renkleri

Visual Basic Dersleri

Visualbasic 6.0 Access ve SQL Dersleri



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.

Web Tasarımı | Site Tasarımı | Bilgisayar Dersleri | Hosting | Domain