qt 连接到 windows 上的 oracle 数据库
qt connect to oracle database on windows
在 Windows 7 我安装了 qt creator,现在我正在尝试连接到 oracle 数据库。我安装了 oracle 客户端和 plsql/developer,一切正常。在 qt creator 中我有错误:
QsqlDatabase: QOCI driver not loaded
这个qt documentation对我不起作用。是否有明确的教程如何在不同的平台和情况下进行操作?
好的。我找到了解决方案。
文档说
set INCLUDE=%INCLUDE%;c:\oracle\oci\include
set LIB=%LIB%;c:\oracle\oci\lib\msvc
cd %QTDIR%\src\plugins\sqldrivers\oci
qmake oci.pro
nmake
If you are not using a Microsoft compiler, replace nmake with make in
the line above.
但是 make 或 nmake 对我不起作用。因为我的机器上没有安装Microsoft Visual c++。
我给出了如何执行此操作的说明:
首先不要忘记安装qt源。在安装期间检查 Sources 复选框。
然后下载并安装oracle客户端win32_11gR2_client.zip。安装时选择 ose Runtime 选项。(即使您使用的是 64 位 os 在 oracle 客户端上下载 32 位版本)。它创建 c:\app\user\product\client_1... 目录
然后打开qt minGW命令行(开始->所有peograms->qt[version]->[version]->MinGW[version]- > Qt [version] for Desktop MinGW [version]) 并移动到 oci 源文件夹:
cd C:\Qt\Qt[version]\[version]\Src\qtbase\src\plugins\sqldrivers\oci
- 然后如文档所述包括 OCI(Oracle 调用接口)路径和库:
set INCLUDE=%INCLUDE%;c:\app\user\product[version]\client_1\oci\include
set LIB=%LIB%;c:\app\user\product[version]\client_1\oci\lib\msvc
5.compile oci 驱动通过执行这两行:
qmake oci.pro
mingw32-make
它将为您创建两个 .dll 文件 qsqloci.dll(发行版)和 qsqlocid.dll(调试版本)
- 最后一步是将这两个文件复制到qtcreator安装文件夹中。
转到:
C:\Qt\Qt[version]\[version]\Src\qtbase\plugins\sqldrivers
并将这些文件复制到:
C:\Qt\Qt[version]\[version]\mingw[version]\plugins\sqldrivers
你准备好了。检查连接试试这个代码:
#include <QCoreApplication>
#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("MY_IP_OR_HOST_NAME");
db.setDatabaseName("XE");
db.setUserName("test");
db.setPassword("test_password");
if (!db.open())
{
qDebug() << db.lastError().text();
}
else{
qDebug() << "Wow opened";
}
return a.exec();
}
您应该使用 QODBC
而不是 QOCI
。
gogagubi
的答案很好,但第 4 步对我不起作用,因为设置 INCLUDE
和 LIB
不适用于 mingw32-make
.
需要在oci.pro
中设置INCPATH
和LIBS
或使用:
qmake "INCPAH +=c:\app\user\product[version]\client_1\oci\include
LIBS +=-Lc:\app\user\product[version]\client_1\oci\lib\msvc" oci.pro
将以下行添加到 oci.pro
:
INCPATH +=c:\app\user\product[version]\client_1\oci\include
LIBS+=-Lc:\app\user\product[version]\client_1\oci\lib\msvc
再见了;
如果 QODBC 驱动程序存在,您可以连接到 oracle 数据库;(Qt 中的默认 windows 存在)如下所示:
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
db.setDatabaseName("Driver={Microsoft ODBC for Oracle};Server=127.0.0.1:1521;Uid=ep;Pwd=605605");
if(!db.open())
exit(0);
QSqlQuery query(db);
query.exec("select * from t");
while(query.next())
QMessageBox::information(0,"",query.value(1).toString());
已连接并允许执行查询;
好运;
在 Windows 7 我安装了 qt creator,现在我正在尝试连接到 oracle 数据库。我安装了 oracle 客户端和 plsql/developer,一切正常。在 qt creator 中我有错误:
QsqlDatabase: QOCI driver not loaded
这个qt documentation对我不起作用。是否有明确的教程如何在不同的平台和情况下进行操作?
好的。我找到了解决方案。
文档说
set INCLUDE=%INCLUDE%;c:\oracle\oci\include
set LIB=%LIB%;c:\oracle\oci\lib\msvc
cd %QTDIR%\src\plugins\sqldrivers\oci
qmake oci.pro
nmake
If you are not using a Microsoft compiler, replace nmake with make in the line above.
但是 make 或 nmake 对我不起作用。因为我的机器上没有安装Microsoft Visual c++。
我给出了如何执行此操作的说明:
首先不要忘记安装qt源。在安装期间检查 Sources 复选框。
然后下载并安装oracle客户端win32_11gR2_client.zip。安装时选择 ose Runtime 选项。(即使您使用的是 64 位 os 在 oracle 客户端上下载 32 位版本)。它创建 c:\app\user\product\client_1... 目录
然后打开qt minGW命令行(开始->所有peograms->qt[version]->[version]->MinGW[version]- > Qt [version] for Desktop MinGW [version]) 并移动到 oci 源文件夹:
cd C:\Qt\Qt[version]\[version]\Src\qtbase\src\plugins\sqldrivers\oci
- 然后如文档所述包括 OCI(Oracle 调用接口)路径和库:
set INCLUDE=%INCLUDE%;c:\app\user\product[version]\client_1\oci\include
set LIB=%LIB%;c:\app\user\product[version]\client_1\oci\lib\msvc
5.compile oci 驱动通过执行这两行:
qmake oci.pro
mingw32-make
它将为您创建两个 .dll 文件 qsqloci.dll(发行版)和 qsqlocid.dll(调试版本)
- 最后一步是将这两个文件复制到qtcreator安装文件夹中。 转到:
C:\Qt\Qt[version]\[version]\Src\qtbase\plugins\sqldrivers
并将这些文件复制到:
C:\Qt\Qt[version]\[version]\mingw[version]\plugins\sqldrivers
你准备好了。检查连接试试这个代码:
#include <QCoreApplication>
#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("MY_IP_OR_HOST_NAME");
db.setDatabaseName("XE");
db.setUserName("test");
db.setPassword("test_password");
if (!db.open())
{
qDebug() << db.lastError().text();
}
else{
qDebug() << "Wow opened";
}
return a.exec();
}
您应该使用 QODBC
而不是 QOCI
。
gogagubi
的答案很好,但第 4 步对我不起作用,因为设置 INCLUDE
和 LIB
不适用于 mingw32-make
.
需要在oci.pro
中设置INCPATH
和LIBS
或使用:
qmake "INCPAH +=c:\app\user\product[version]\client_1\oci\include
LIBS +=-Lc:\app\user\product[version]\client_1\oci\lib\msvc" oci.pro
将以下行添加到 oci.pro
:
INCPATH +=c:\app\user\product[version]\client_1\oci\include
LIBS+=-Lc:\app\user\product[version]\client_1\oci\lib\msvc
再见了; 如果 QODBC 驱动程序存在,您可以连接到 oracle 数据库;(Qt 中的默认 windows 存在)如下所示:
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
db.setDatabaseName("Driver={Microsoft ODBC for Oracle};Server=127.0.0.1:1521;Uid=ep;Pwd=605605");
if(!db.open())
exit(0);
QSqlQuery query(db);
query.exec("select * from t");
while(query.next())
QMessageBox::information(0,"",query.value(1).toString());
已连接并允许执行查询; 好运;