QT连接ORACLE数据库
一 资源下载和安装
注意:在安装Qt的过程中切记把 src选项勾上,默认是不选的。
- Oracle11g (win32_11gR2_database_1of2,win32_11gR2_database_2of2)
下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#11g
二 编译生成ORACLE驱动
1、使用Qt打开安装目录下的项目oci.pro,(D:\QT\QT5.9.3\5.9.3\Src\qtbase\src\plugins\sqldrivers\oci)每个人安装路径可能不一样,根据自己的情况更改。
2、直接编译项目oci,会出现以下错误
解决办法:
(1)将 QMAKE_USE += oci 替换成 QMAKE_LFLAGS +=D:\Oracle\product\11.2.0\dbhome_1\BIN\oci.dll
(2)在末尾添加INCLUDEPATH += D:\Oracle\product\11.2.0\dbhome_1\OCI\include
LIBPATH += D:\Oracle\product\11.2.0\dbhome_1\OCI\lib\MSVC
(3)D:\Oracle\product\11.2.0\dbhome_1\是Oracle数据库的安装目录
3.然后点击状态栏上的 构建(B)->重新构建项目“oci”,没有报错,警告忽略。
4.在根目录D:\plugins\sqldrivers找到以下四个文件。注:也可能在C盘的根目录下。
5.将qsqlocid.dll和qsqloc.dll复制到Qt的安装目录(D:\QT\QT5.9.3\5.9.3\mingw53_32\plugins\sqldrivers)
6.至此,准备工作完成。
三 配置ORACLE 11G
1.创建实例
2.配置监听
注意:必须进行这两步才能正常连接数据库。
参考地址:http://blog.itpub.net/31535677/viewspace-2153880/
四 QT编写代码连接ORACLE数据库
1.在项目中的pro文件加上 QT += sql
2.代码
-
-
-
-
-
-
-
-
MainWindow::MainWindow(QWidget *parent) :
-
QMainWindow(parent),
-
ui(new Ui::MainWindow)
-
{
-
ui->setupUi(this);
-
-
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
-
db.setHostName("localhost"); //数据库服务器ip
-
db.setPort(1521); //数据库端口号
-
db.setDatabaseName("orcl"); //数据库名称
-
db.setUserName("scott"); //数据库用户名
-
db.setPassword("1234"); //数据库密码
-
if(!db.open())
-
{
-
qDebug()<<"open failed";
-
qDebug()<<db.lastError();;
-
return;
-
}
-
else
-
{
-
qDebug()<<"open succeeded";
-
qDebug()<<db.driverName();
-
}
-
}
-
-
MainWindow::~MainWindow()
-
{
-
delete ui;
-
}
五 疑难
1.问题:SQL Plus出现ORA-12560: TNS: 协议适配器错误问题
解决:检查注册表。win+R ,输入regedit。找到HKEY_LOCAL_MACHINE->SOFTWARE->Oracle(64位系统安装64位数据库)或者HKEY_LOCAL_MACHINE->SOFTWARE->WOW6432Node->Oracle(64位系统安装32位数据库),找到KEY_OraDb11g_home1,找到ORACLE_SID,查看下它的数值数据,将它改为创建实例中的全局数据库名,我的是orcl。
参考:https://blog.csdn.net/sixandsix/article/details/69396784
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2019-12-10 python 获取自己exe位置 sys.executable sys.prefix
2015-12-10 python seq
2015-12-10 block nbd1 unexpected reply vfs can't find ext4 filesystem
2014-12-10 ceph_APP Funcs chkactual combat
2014-12-10 libvirt C-API
2014-12-10 extend vg(pv,lv)use HotPlug Storage PV for VMI(ECC Env)
2014-12-10 openNebula images