zoukankan      html  css  js  c++  java
  • Qt5编译oracle驱动教程

    我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用。但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题。下面废话不多少,直接上教程。

    注:本教程采用Qt5.5.1版本来讲下Qt5.5.1和Qt5.3.2编译OCI驱动过程,其他版本请对号入座。

    我的Qt版本是Qt5.5.1,安装路径是默认的 C:QtQt5.5.1。

    我的oracle 11g客户端安装路径: D:appclientproduct11.2.0client_1。

    一、我们安装oracle11g,oracle下载与安装我不再累赘,网上一大堆安装方法。

    (经过验证,发现不添加系统变量也可以编译,故此将其划掉)

    二、我们打开环境变量在系统变量的PATH中添加

    然后保存退出,Win+R打开运行输入cmd,在“命令提示符cmd”中输入qmake -vmingw32-make -v查看一下版本号和输出路径是不是我们刚刚设置的,因为很多人电脑上都装了好多版本的Qt,当然这里我为了方便把其他版本的都卸载了。

    不要小看这些小细节,他们看起来虽有些微不足道,但是当你编译出了问题后,你还真不知道从哪下手,所以要切记这一点,直接将你想要的设到环境变量中去。

    二、打开oci文件夹:C:QtQt5.5.15.5Srcqtbasesrcpluginssqldriversoci

    三、打开oci工程,在Pro文件中添加:

    INCLUDEPATH += D:appclientproduct11.2.0client_1ociinclude
    LIBPATH += D:appclientproduct11.2.0client_1ocilibmsvc

    五、构建 → 重新构建项目 “oci”

    在Qt5.3.2中:

    等待程序构建完毕后,打开C:QtQt5.3.25.3Srcqtbasepluginssqldrivers,可以看到有四个文件将文件全部复制到C:QtQt5.3.25.3mingw482_32pluginssqldrivers中。

    在Qt5.5.1中:

    等待程序构建完毕后,打开C:pluginssqldrivers,可以看到有四个文件将文件全部复制到C:QtQt5.5.15.5mingw482_32pluginssqldrivers中。

    有人会说我找不到这个C:QtQt5.3.25.3Srcqtbasepluginssqldrivers路径,这个路径在新版本中Qt官方改了,就像Qt5.5.1的这个路径默认在Qt安装的根目录里面,就是C:pluginssqldrivers.

    Qt5.5.1和Qt5.3.2编译OCI驱动教程,就到这里结束了。

    四、验证

    如何验证?网上验证方法一大堆,在这我也贴出一个。

     1 #include "widget.h"
     2 #include <QStringList>
     3 #include <QSqlQuery>
     4 #include <QSqlError>
     5 #include <QSqlDatabase>
     6 
     7 #include <QMessageBox>
     8 #include <QDebug>
     9 /***********************************************
    10  * 作者:夜潇
    11  * QQ:1285015525
    12  * 博客:http://www.cnblogs.com/CLXiao-1029/
    13  * ********************************************/
    14 
    15 Widget::Widget(QWidget *parent)
    16     : QWidget(parent)
    17 {
    18     //查看所有数据库驱动
    19     QStringList lists = QSqlDatabase::drivers();
    20 
    21     for(int i = 0 ;i < lists.size(); ++ i)
    22     {
    23         qDebug() << lists.at(i);
    24     }
    25     //载入oracle驱动,打开本地数据库
    26     QSqlDatabase db2=QSqlDatabase::addDatabase("QOCI");
    27     db2.setHostName(tr("127.0.0.1"));//如果连接远程数据库,就把IP换成对方的,并且远程防火墙是关闭的
    28     db2.setPort(1521);
    29     db2.setUserName(tr("scott"));//这个用户是默认的,如何打开这个用户,自己百度
    30     db2.setPassword(tr("1029"));//这个是我的口令
    31     db2.setDatabaseName(tr("orcl"));
    32     if(!db2.open())
    33     {
    34         QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接失败!"));
    35         qDebug() <<"error_Oracle:
    " << db2.lastError().text();
    36         return;
    37     }
    38     else
    39     {
    40         QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接成功!"));
    41         QSqlQuery query;
    42         bool isok = query.exec("select * from xsb");
    43         if(!isok)
    44         {
    45             db2.close();
    46             return;
    47         }
    48         query.next();
    49         QString Str1 = query.value(1).toString();
    50         QString Str2 = query.value(2).toString();
    51         QString Str3 = query.value(3).toString();
    52         QString Str4 = query.value(4).toString();
    53         QString Str5 = query.value(5).toString();
    54         QString Str6 = query.value(6).toString();
    55         QString Str7 = query.value(7).toString();
    56         qDebug() << QObject::tr("xsb:" )<< Str1<<Str2<< Str3<<Str4<< Str5<<Str6<<Str7;
    57     }
    58 
    59 }

    有问题请留言,或者发邮箱给我:1285015525@qq.com 

  • 相关阅读:
    垃圾回收的可触及性
    常用的垃圾回收算法
    石子归并(区间dp 模板)
    D. Zero Quantity Maximization ( Codeforces Round #544 (Div. 3) )
    Parity game(带权并查集+离散化)
    Supermarket(贪心/并查集)
    D. Nested Segments(树状数组、离散化)
    dijkstra,belllman-ford,spfa最短路算法
    重载符
    Electrification Plan 最小生成树(prim+krusl+堆优化prim)
  • 原文地址:https://www.cnblogs.com/CLXiao-1029/p/7291691.html
Copyright © 2011-2022 走看看