+48 693 351 926 info@bsf.net.pl
Zaznacz stronę

Ostatnio ponownie pracowałem nad automatyzacją jednego procesu w AutoIt i natrafiłem na temat połączenia z bazą danych SQL.

AutoIt do połączeń z różnymi źródłami danych wykorzystuje obiekt Connection (ADO). ActiveX Data Objects jest zestawem obiektów COM służącym do nawiązywania połączeń z dowolną bazą danych dla których opracowany został sterownik OLEDB. Za jego pomocą możesz połączyć się z bazą danych SQL, arkuszem Excel, bazą Access czy plikiem tekstowym.

W AutoIt w pierwszej kolejności tworzysz obiekty ADO. Pierwszy obiekt służy do obsługi połączenia z bazą danych, a drugi do odebrania danych.

Global $oConnection = ObjCreate("ADODB.Connection")
Global $oRecordSet = ObjCreate("ADODB.Recordset")

W następnej kolejności musisz zdefiniować „Connection String” za pomocą którego konfigurujesz sterownik do połączenia z właściwym źródłem danych. W tym przypadku konfigurujesz połączenie z serwerem Microsoft SQL Server:

Local $connString="DRIVER={SQL Server};SERVER=192.168.0.100;DATABASE=BAZADANYCH;uid=USER;pwd=PASS;"
$oConnection.Open ($connString)

Połączenie jest już skonfigurowane i uruchomione. Aby go użyć napisz jeszcze kawałek kodu SQL. Do połączenia i odbioru wykorzystaj metodę „Open” obiektu Recordset ($oRecordSet):

$sQuery="select count(*) as ilosc from sprzedaz where kwota > 100;"
$oRecordSet.Open($sQuery, $oConnection)

W powyższym poleceniu SQL zlicza ilość wierszy gdzie kwota jest wyższa od 100 a wynik dostępny jest z etykietą „ilosc”. Pobierasz tylko ten wynik zliczenia korzystając z poniższego kodu:

$ilosc = $oRecordSet.Fields("ilosc").Value

Gdybyś pobrał dane wielowierszowe, np wszystkich pracowników, których kwota sprzedaży przekroczyła 100:

$sQuery="select pracownik,kwota as handlowiec from sprzedaz where kwota > 100;"
$oRecordSet.Open($sQuery, $oConnection)

Trzeba napisać troszkę więcej kodu:

While Not $oRecordSet.EOF
    For $rsField In $oRecordSet.Fields
        $rsValuePracownik = $oRecordSet.Fields("pracownik").value
        $rsValueKwota     = $oRecordSet.Fields("kwota").value
        [...] - Tu zrób coś z danymi
    Next
    $oRecordSet.MoveNext
WEnd

Nie zapomnij o zamknięciu obiektów ADO. Poprzez przypisanie wartości 0 (zero) usuwamy obiekt z pamięci.

$oRecordSet.Close()
$oRecordSet = 0

$oConnection.Close()
$oConnection = 0

Mam nadzieję, że choć trochę pomogłem 🙂

Andrzej