Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Получить данные из таблицы БД Oracle (http://forum.oszone.net/showthread.php?t=283895)

support23 20-06-2014 09:44 2366433

Получить данные из таблицы БД Oracle
 
Доброго дня!
Возникла необходимость в получении данных из таблицы БД Oracle, таблица содержит 1 столбец и множество строк (кол-во строк - значение не постоянное и может изменяться)
На текущий момент есть следующее:

Код:

$conn = ObjCreate( "ADODB.Connection" )
$DSN =  "Driver={Microsoft ODBC for Oracle}; " & _
        "CONNECTSTRING=(DESCRIPTION=" & _
        "(ADDRESS=(PROTOCOL=TCP)" & _
        "(HOST=hostname)(PORT=1521))" & _
        "(CONNECT_DATA=(SERVICE_NAME=dbname))); uid=login;pwd=password;"
$conn.Open($DSN)
$rs = ObjCreate( "ADODB.RecordSet" )

$select = "select vr.NAME from dwb.USERS us join dwb.USER_ROLE ur on ur.id_user=us.id_user join dwb.V_ROLE vr on ur.id_role = vr.ID_USER where us.NAME = 'Ivanov'"
$rs.Open($select, $conn )




$conn.close

как реализовать вывод данных, полученных из таблицы?

madmasles 20-06-2014 11:41 2366489

support23,
Вставьте в строку поиска google ADODB.Connection site:autoit-script.ru, там несколько тем об этом есть.

support23 20-06-2014 15:33 2366599

отлично, я нашел что искал, спасибо!

добавил строки:
$aResultsArray = $rs.GetRows()
_ArrayDisplay($aResultsArray, "Results")

конечный результат:
Код:

$conn = ObjCreate( "ADODB.Connection" )
$DSN =  "Driver={Microsoft ODBC for Oracle}; " & _
        "CONNECTSTRING=(DESCRIPTION=" & _
        "(ADDRESS=(PROTOCOL=TCP)" & _
        "(HOST=hostname)(PORT=1521))" & _
        "(CONNECT_DATA=(SERVICE_NAME=dbname))); uid=login;pwd=password;"
$conn.Open($DSN)
$rs = ObjCreate( "ADODB.RecordSet" )

$select = "select vr.NAME from dwb.USERS us join dwb.USER_ROLE ur on ur.id_user=us.id_user join dwb.V_ROLE vr on ur.id_role = vr.ID_USER where us.NAME = 'Ivanov'"
$rs.Open($select, $conn )


$aResultsArray = $rs.GetRows()
_ArrayDisplay($aResultsArray, "Results")

$conn.close


madmasles 20-06-2014 16:59 2366642

support23,
А у Вас не ошибочно стоит пустая скобка ) в 9-ой строке кода?

support23 20-06-2014 19:13 2366683

Цитата:

Цитата madmasles
А у Вас не ошибочно стоит пустая скобка ) в 9-ой строке кода? »

исправил, тема закрыта.

support23 25-06-2014 10:10 2368223

если результат селекта - отсутствие значений, то выводит ошибку:

==> The requested action with this object has failed.:
$aResultsArray = $rs.GetRows()
$aResultsArray = $rs.GetRows()^ ERROR

как предотвратить завершение работы скрипта в таком случае? нужно чтобы даже в случае отсутствия значений в результате выполнения селекта, скрипт продолжил работу

support23 25-06-2014 10:38 2368239

сам спросил, сам нашел ответ)
нужно добавить:


Код:

If Not $rs.EOF Then
$aResultsArray = $rs.GetRows()

....

endif


Iska 25-06-2014 11:58 2368268

Цитата:

Цитата support23
сам спросил, сам нашел ответ) »

Проверять надо либо и «.EOF», и «.BOF» совместно, либо «.RecordCount» (если оно поддерживается данных поставщиком данных).


Время: 20:47.

Время: 20:47.
© OSzone.net 2001-