Russian Qt Forum
Апрель 26, 2024, 14:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 5.4.2 + Oracle 10g  (Прочитано 4327 раз)
crystal_ship
Гость
« : Январь 22, 2016, 18:29 »

Помогите, пожалуйста, с ошибкой
Код:
qDebug() << QSqlDatabase::drivers();
    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("MYDATABA");
    db.setUserName("SYSTEM");
    db.setPassword("qqqq");
    db.setPort (1521);   
    if (!db.open())
    {
      qDebug() << db.lastError();
    }

В результате получаю:

 
Код:
("QSQLITE", "QMYSQL", "QMYSQL3", "QOCI", "QOCI8", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
QOCIDriver: unable to create environment
QSqlError("2685564", "Unable to logon", "")
Unable to free Error handle: -2
Unable to free Environment handle: -2

Что только не пробовала из советов интернете, не мгу понять в чем проблема Грустный Может, кто-нибудь подскажет разумное решение или хот я бы возможную причину ошибки?

Заранее спасибо!
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #1 : Январь 22, 2016, 19:16 »

Ну для начала попробуйте соединиться с помощью sqlplus - если не получится, то хоть его выхлоп можно будет проанализировать...
Записан
crystal_ship
Гость
« Ответ #2 : Январь 22, 2016, 19:40 »

Ну для начала попробуйте соединиться с помощью sqlplus - если не получится, то хоть его выхлоп можно будет проанализировать...

в sql developer соединение создается и работает все , а вот в Qt уже появляются ошибки
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #3 : Январь 25, 2016, 12:31 »

Ну для начала попробуйте соединиться с помощью sqlplus - если не получится, то хоть его выхлоп можно будет проанализировать...

в sql developer соединение создается и работает все , а вот в Qt уже появляются ошибки
Уверены что sql developer использует OCI? Вполне может быть он использует ODBC. Попробуйте все же sqlplus.
Что касается Qt-приложения - попробуйте собрать в debug, установить системную переменную QT_DEBUG_PLUGINS=1 и проанализируйте выхлоп в консоль.
Записан
Tamori Nao
Гость
« Ответ #4 : Январь 25, 2016, 15:27 »

Перекинь библиотеки драйверов оракла в папку где собирается прога
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 579


Просмотр профиля
« Ответ #5 : Январь 26, 2016, 08:05 »

Подключения к БД oracle можно выполнить двумя способами.

По SID

Код
C++ (Qt)
QSqlDatabase database = QSqlDatabase::addDatabase( "QOCI", "SchemeName" );
 
database.setDatabaseName( sid );
database.setHostName( host );
database.setPort( port );
database.setUserName( user );
database.setPassword( password );
 

По Service name (текст в методе setDatabaseName не должен содержать пробелов)

Код
C++ (Qt)
QSqlDatabase database = QSqlDatabase::addDatabase( "QOCI", connection_name );
 
database.setDatabaseName(
   QString::fromUtf8( "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%1)(PORT=%2))(CONNECT_DATA=(SERVICE_NAME=%3)))" )
       .arg( host )
       .arg( port )
       .arg( name );
database.setHostName( QString() );
database.setPort( int()  );
database.setUserName( user );
database.setPassword( password );
 

И вроде как, connection_name не должно быть пустым.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.124 секунд. Запросов: 22.