Название: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: AlexVK от Май 16, 2007, 11:25 Люди только не пинайте по лицу ногами! Знаю что вопрос обсуждался сотни раз. Но никак не получается у меня подключиться к базе Oracle 10g! Использую коммерческую Qt 4.2.0 (проинтегрированная в VS 2005), ну соответственно Windows XP, поставил клиента Oracle 10g (XEClient, c:\XEClient).
1) Создал папку в c:\XEClient, network\admin туда поместил файл tnsnames.ora, со следующим содержимым: Код: db_name= 2) Собрал драйвер для Oracle: 2.1. В командной строке VS 2005 command Prompt, прописал следующее: set INCLUDE=%INCLUDE%;c:\XEClient\oci\include set LIB=%LIB%;c:\XEClient\oci\lib\msvc cd %QTDIR%\src\plugins\sqldrivers\oci qmake -o Makefile oci.pro nmake В папке C:\Qt\4.2.0\plugins\sqldrivers, появились файлы: qsqloci.dll, qsqloci.dll.manifest, qsqloci.lib. 3) Создал проект Qt application. 3.1. Создал файл для подключения connection.h. Код: #ifndef CONNECTION_H 3.2. Создал файл testdb.pro Код: TARGET = DB 3.3. в папку c:\Windows\system32, положил oci.dll из клиента 3.4. откомпилировал в VS 2005 prompt набрал set PATH=%PATH%;c:\XEClient\bin затем qmake -o Makefile testdb.pro затем nmake Проверял на SqlPlus (клиента Oracle), коннект происходит, базу вижу и работаю с ней. НО ПРИЛОЖЕНИЕ МОЕ testdb.exe подсоединяться к базе не хочет!:( Захожу под debug и смотрю output, подцепляет ли мое приложение драйвер в итоге нахожу там строчки: 'testdb.exe': Loaded 'C:\Qt\4.2.0\plugins\sqldrivers\qsqloci.dll', Binary was not built with debug information. 'testdb.exe': Loaded 'C:\WINDOWS\system32\oci.dll', Binary was not built with debug information. И в конце необъяснимым образом вот эти строки: QSqlDatabase: QOCI driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC QPSQL7 QPSQL. Делаю вывод, что все же приложение мое не подгружает драйвер, ВОПРОС ПОЧЕМУ, ведь он подгружает нужные DLL? Пробую после сборки драйвера запустить приложение тролей из demos (sqlbrowser.exe). В списке появляется драйвер, но при попытке подключения к базе выдается следующее сообщение: Failed to open database: QOCI: Unable to logon ORA-12154: TNS:could not resolve the connect identifier specified :(( Люди помогите пожалуйста, что я делаю не так? Запарился прям уже:( Название: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: Racheengel от Май 16, 2007, 11:41 в папке с ехе-шкой создай подкаталог sqldrivers и положи туда qsqloci.dll.
Название: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: Admin от Май 16, 2007, 14:04 с ораклом и я долго парился
я правда использую otl.sf.net, а не стандартные драйвера от qt Название: Re: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: Sergey B. от Май 18, 2007, 06:03 Попробуй законнектится, какой нить сторонней тулзой...
Не через Web, а именно со своего хоста по сети! Я так и не смог завести этот грёбаный XE, тож писал нет доступа, причём и NetBeans ом тож пробовал (у него встроенный клиент для баз)... Оракл просто не давал доступа из сети... Так что забил и продолжаю юзать PostgreSQL. Название: Re: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: dr_dizel от Май 18, 2007, 08:39 Цитата: "AlexVK" Создал папку в c:\XEClient, network\admin туда поместил файл tnsnames.ora, со следующим содержимым: Код: db_name= Пробую после сборки драйвера запустить приложение тролей из demos (sqlbrowser.exe). В списке появляется драйвер, но при попытке подключения к базе выдается следующее сообщение: Failed to open database: QOCI: Unable to logon ORA-12154: TNS:could not resolve the connect identifier specified :(( Люди помогите пожалуйста, что я делаю не так? Запарился прям уже:( У тебя дескриптор не распознаётся. Ты вообще его болванку написал тут. Реально там нормальные IP, порт, имя экземпляра БД и выделенный слушатель? А tnsping имени проходит? Коннектится ли так: Код: sqlplus user/pass@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=123.456.789.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=my_service))) Кстати: SERVICE_NAME!!! Название: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: Admin от Май 18, 2007, 12:18 я всегда думал - нафига так в оракле придумали
с service_name :) Название: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: AlexVK от Май 21, 2007, 07:38 dr_dizel, IP, порт, имя экземпляра БД - реальные (здесь привел болванку :), так как указывать настоящие в целях безопасности не стал), а вот что такое выделенный слушатель не знаю:(. tnsping проверить не смог, потомучто оказалось что у клиента (XEClient) Oracle нет вообще этого tnsping:(.
Попробывал так: Цитировать sqlplus user/pass@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=123.456.789.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=my_service))), только вместо SERVICE_NAME поставил SID (в sqlplus), все работает к базе коннектится... добавлено спустя 2 минуты: А на счет использования другой СУБД, я бы с радостью использовал другую, например MySQL, тем более что с Oracl`ом вообще не знаком но требуют Oracle, требуют и все!!! Приходиться работать с ним:( Название: Re: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: agatsky_den от Август 17, 2008, 08:10 Люди только не пинайте по лицу ногами! Знаю что вопрос обсуждался сотни раз. Но никак не получается у меня подключиться к базе Oracle 10g! Использую коммерческую Qt 4.2.0 (проинтегрированная в VS 2005), ну соответственно Windows XP, поставил клиента Oracle 10g (XEClient, c:\XEClient). Была и меня проблема такая. Решил следующим образом:1) Создал папку в c:\XEClient, network\admin туда поместил файл tnsnames.ora, со следующим содержимым: Код: db_name= 2) Собрал драйвер для Oracle: 2.1. В командной строке VS 2005 command Prompt, прописал следующее: set INCLUDE=%INCLUDE%;c:\XEClient\oci\include set LIB=%LIB%;c:\XEClient\oci\lib\msvc cd %QTDIR%\src\plugins\sqldrivers\oci qmake -o Makefile oci.pro nmake В папке C:\Qt\4.2.0\plugins\sqldrivers, появились файлы: qsqloci.dll, qsqloci.dll.manifest, qsqloci.lib. 3) Создал проект Qt application. 3.1. Создал файл для подключения connection.h. Код: #ifndef CONNECTION_H Код: TARGET = DB 3.4. откомпилировал в VS 2005 prompt набрал set PATH=%PATH%;c:\XEClient\bin затем qmake -o Makefile testdb.pro затем nmake Проверял на SqlPlus (клиента Oracle), коннект происходит, базу вижу и работаю с ней. НО ПРИЛОЖЕНИЕ МОЕ testdb.exe подсоединяться к базе не хочет!:( Захожу под debug и смотрю output, подцепляет ли мое приложение драйвер в итоге нахожу там строчки: 'testdb.exe': Loaded 'C:\Qt\4.2.0\plugins\sqldrivers\qsqloci.dll', Binary was not built with debug information. 'testdb.exe': Loaded 'C:\WINDOWS\system32\oci.dll', Binary was not built with debug information. И в конце необъяснимым образом вот эти строки: QSqlDatabase: QOCI driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC QPSQL7 QPSQL. Делаю вывод, что все же приложение мое не подгружает драйвер, ВОПРОС ПОЧЕМУ, ведь он подгружает нужные DLL? Пробую после сборки драйвера запустить приложение тролей из demos (sqlbrowser.exe). В списке появляется драйвер, но при попытке подключения к базе выдается следующее сообщение: Failed to open database: QOCI: Unable to logon ORA-12154: TNS:could not resolve the connect identifier specified :(( Люди помогите пожалуйста, что я делаю не так? Запарился прям уже:( 1а. Собрал дрйвер (исправил ошибку "driver not loaded") set INCLUDE=%INCLUDE%;D:\instantclient_11_1\sdk\include set LIB=%LIB%;D:\instantclient_11_1\sdk\lib\msvc qmake -o Makefile oci.pro make 1б. Пересобрал qt c параметрами configure -qt-sql-oci -release -fast -shared -I "D:\instantclient_11_1\sdk\include" -L "D:\instantclient_11_1\sdk\lib\msvc" 2. Убрал лишние oci.dll (исправил ошибку Failed to open database: QOCI: Unable to logon) в окружении (c:\windows\system32\oci.dll), оставил только клиент D:\instantclient_11_1 ps Перерыл весь интернет с этой проблемой, спасибо всем кто помог. Название: Re: ПРОБЛЕМА!!! с Qt 4 + Oracle 10g ПОМОГИТЕ!!! Отправлено: spirit от Август 17, 2008, 10:21 вставь эту строку
Код: (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip_adres)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SID = db_name))) Код: db.setDatabaseName(...); Код: QSqlDatabase db = QSqlDatabase::addDatabase("QOCI"); |