Visual Basic – Kreiranje SQL serverskih objekata preko ADO-a

U ovom prilogu obradićemo pitanje kako kreirati ili modifikovati objekte na MS SQL serveru uz pomoć ADO-a (ActiveX Data Objects). Za razliku od prethodnika, DAO modela za pristup podacima, ADO ne može preko objektnog modela da kreira i modifikuje objekte SQL servera. Nemoguće je dodati objekat u Tables kolekciju, međutim, to vas ne sprečava da uputite instrukcije Transact SQL-a (Microsoft-ov SQL) korišćenjem metode Execute objekta Connection i opcionog parametra adCmdText.

Kao što znate, korišćenjem Transact SQL-a možete kreirati, modifikovati, brisati device-eve, uskladištene procedure i sve ostalo što inače radite preko Enterprise manager-a. Detaljnije o Transact SQL-u možete čitati u SQL prilozima ove rubrike. Da biste videli kako na delu možemo modifikovati objekte na serveru, ispratite sledeće korake:

  • Pokrenite Visual Basic i otvorite novi standardni EXE projekat. Projekat nazovite „ModObjekt“, a glavnu formu preimenujte u frmGlavna, te dodajte referencu ka Microsoft ActiveX Data Objects 2.0.
  • Dodajte na formu tri komandna dugmeta i dajte im sledeće nazive (osobina Name): cmdKreiraj, cmdIzmeni i cmdObrisi. Rasporedite ih kao na slici.
  • Za upravljanje objektom Connection dodajte sledeći kod vezan za učitavanje forme:


    Option Explicit
    Private mConn As Connection

    Private Sub Form_Load()
    Set mConn = New Connection
    mConn.Open "Provider=SQLOLEDB.1;
    User ID=sa;Password=password"
    + ";Location=WINEMILLER;Database=pubs"
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    mConn.Close
    Set mConn = Nothing
    End Sub


  • Zatim dodajte i programski kod vezan za dugmad:


    Private Sub cmdIzmeni_Click()
    `izmena tabele
    Dim sCmd As String
    sCmd = "alter table
    JEDNOSTAVNA add STAVKA_N CHAR(40) "
    sCmd = sCmd + "NULL"
    mConn.Execute sCmd, , adCmdText
    End Sub

    Private Sub cmdKreiraj_Click()
    `kreiranje jednostavne table
    Dim sCmd As String
    sCmd = "create table
    JEDNOSTAVNA (SIFRA INTEGER NOT "
    sCmd = sCmd + "NULL"
    sCmd = sCmd + ", STAVKACHAR(40) NOT NULL)"
    mConn.Execute sCmd, , adCmdText
    End Sub

    Private Sub cmdObrisi_Click()
    `brisanje tabele
    Dim sCmd As String
    sCmd = "drop table JEDNOSTAVNA"
    mConn.Execute sCmd, , adCmdText
    End Sub


Na svaki klik, na bilo koje od dugmadi, generiše se Transact SQL komanda za modifikaciju baze podataka i šalje se putem metode Execute objekta Connection. Korišćenjem opcionog parametra adCmdText, bilo koja komanda koju server „razume“ može biti upućena serveru na obradu. Korišćenje metode Execute otvara bezbroj novih mogućnosti. Ponekad objektni model može biti restriktivan, ali Microsoft je ipak „otvorio vrata“ programerima da bi mogli direktno da komuniciraju sa bazama podataka.

Pratite Krstaricu na www.krstarica.com