在Windows 7上我安装了qt creator,现在我正在尝试连接到oracle数据库。我安装了oracle客户端和plsql / developer,一切正常。在qt创建者中我有错误:
QsqlDatabase:未加载QOCI驱动程序
此qt documentation对我不起作用。是否清楚教程如何在不同的平台和情况下进行?
答案 0 :(得分:3)
确定。我找到了解决方案。
文档说
设置INCLUDE =%INCLUDE%; c:\ oracle \ oci \ include
设置LIB =%LIB%; c:\ oracle \ oci \ lib \ msvc
cd%QTDIR%\ src \ plugins \ sqldrivers \ oci
qmake oci.pro
NMAKE
如果您不使用Microsoft编译器,请将nmake替换为make in 上面这一行。
但 make 或 nmake 对我不起作用。因为我没有在我的机器上安装 Microsoft Visual c ++ 。
我指示了如何执行此操作:
首先不要忘记安装qt源。在安装过程中,选中来源复选框。
然后下载并安装oracle客户端win32_11gR2_client.zip。在安装过程中选择运行时选项。(即使您在oracle客户端上使用64位操作系统下载32位版本)。它创建c:\ app \ user \ product \ client_1 ...目录
然后打开qt minGW命令行(开始 - >所有peograms - > qt [版本] - > [版本] - > MinGW [版本] - > Qt [版本]为桌面MinGW [版本])并移动到oci源文件夹:
cd C:\ Qt \ Qt [版本] \ [版本] \ Src \ qtbase \ src \ plugins \ sqldrivers \ oci
设置INCLUDE =%INCLUDE%; c:\ app \ user \ product [版本] \ client_1 \ oci \ include
设置LIB =%LIB%; c:\ app \ user \ product [版本] \ client_1 \ oci \ lib \ msvc
5.通过执行以下两行来编译oci驱动程序:
qmake oci.pro
<强>的mingw32-使强>
它将为您创建两个.dll文件 qsqloci.dll (发布版本)和 qsqlocid.dll (调试版本)
<强> C:\ Qt的\ Qt的[版本] \ [版] \ SRC \ qtbase \插件\ sqldrivers 强>
并将这些文件复制到:
<强> C:\ Qt的\ Qt的[版本] \ [版本] \ mingw的[版] \插件\ 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();
}
答案 1 :(得分:1)
您应该使用QODBC
的{{1}} instea。
答案 2 :(得分:0)
gogagubi
答案很好,但第4步对我不起作用,因为设置INCLUDE
和LIB
不适用于mingw32-make
。
需要在INCPATH
中设置LIBS
和oci.pro
或使用:
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
答案 3 :(得分:0)
ciao tutto; 您可以使用QODBC驱动程序连接到oracle db(如果存在);(存在Qt窗口中的默认值),如下所示:
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());
这已连接并允许执行查询; buona fortuna;