QT连接Oracle和Mysql的详细步骤,已成功~!

近几天一直在整QT的数据库连接这一块。因为QT是开源的,所以涉及的连接Oracle及Mysql的驱动都必须自己编译生成。通过不断的测试、调试,终于把QT连接Oracle和Mysql的驱动编译生成好了。

 

QT环境:Qt 4.6.0

 

打开Qt Command Prompt,开始菜单→程序→QT目录→Qt Command Prompt

 

生成Oracle驱动的步骤如下:

1、set INCLUDE=%include%;C:/oracle/OCI/include;D:/QT/mingw/include

2、set LIB=%lib%;C:/oracle/OCI/lib/MSVC

3、cd %QTDIR%/src/plugins/sqldrivers/oci

4、qmake oci.pro

5、mingw32-make

 

在最后一步mingw32-make的时候报一系列的错误如下:

c:/oracle/OCI/include/oratypes.h:97: error: '_int64' does not name a type
c:/oracle/OCI/include/oratypes.h:98: error: '_int64' does not name a type
c:/oracle/OCI/include/oratypes.h:99: error: 'oraub8' does not name a type
c:/oracle/OCI/include/oratypes.h:100: error: 'orasb8' does not name a type

这个错误令人非常头痛,后来才发现是gc++的编译环境的_mingw.h中只定义了如下

# ifndef __int64
#  define __int64 long long
# endif
# ifndef __int32
#  define __int32 long
# endif
# ifndef __int16
#  define __int16 short
# endif
# ifndef __int8
#  define __int8 char
# endif

并没有定义_int64,故在编译之前要在oratypes.h中加上如下:

# ifndef _int64
#  define _int64 long long
# endif


#define ORAXB8_DEFINED
#ifndef lint
 typedef unsigned _int64 oraub8;
 typedef signed _int64 orasb8;
 typedef oraub8 ub8;
 typedef orasb8 sb8;
#else
# define ub8 oraub8
# define sb8 orasb8
# define oraub8 unsigned _int64
# define orasb8 signed _int64
#endif /* !lint */

 

重新执行生成Oracle驱动的步骤即完成Oracle驱动的生成,生成成功的截图如下:

生成成功的截图

 

 

测试代码如下:

#include <QtCore/QCoreApplication>

#include <QtSql/qsqldatabase.h>
#include <QtCore/QStringList>
#include <QtCore/QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    如果该驱动存在,打印出来为空白
    //QSqlDatabase Connect = QSqlDatabase::addDatabase("QOCI");
   
    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    //依次打印所有驱动
    foreach(QString driver, drivers)
        qDebug() << driver << "/t";
    return a.exec();
}

 

打印结果如下:

如图所示

 

编译生成Mysql驱动比较简单,参杂以下blog及完成Mysql驱动的生成

http://hi.baidu.com/yafeilinux/blog/item/c895e723f474e0f8d6cae22b.html/cmtid/46d0f5832252d19df703a64e

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值