qt mysql 编译_WIndows下QT编译MySQL数据库的开始

本文详细记录了在Windows环境下,使用QT编译连接MySQL数据库的过程,包括下载mingw-utils,设置环境变量,编译libmysql.a文件,修改mysql.pro文件,以及编译后的测试步骤,最终实现数据库查询功能。
摘要由CSDN通过智能技术生成

早出晚归,从中午到下午吃饭,终于把类似QQ的登录界面基本画完了,当然对于高手来说很简单了。然后我就准备与数据库连接,实现登录功能。至于那个帐号选择,和相应的头像,不打算用数据库,因为太浪费了,我想的是当第一次连接时,从数据库里面肯定会有相应头像在里面,那么我就从本地copy过来,然后放在本地文件,这边以后帐号选择的时候,就可以直接从本地同步头像。初步是这样设想。

数据库连接也是个大问题,刚开始觉得连接Mysql数据库跟以前用java的eclipse一样简单,加载下驱动包就行了。没想到要自己编译,而且还有很多奇怪的问题出现。上网找资料的时候,说法有时候不太管用。自己琢磨了很久,终于连上了,实现了查询。还是高兴的。用sqlite的时候就是能连接上,但是始终查询没反映,所以纠结了老长时间,最终舍弃了。不是自己意志力不够,有时候还是要换下思路。

下面开始说下自己在Windows7下编译,连接到查询的整个过程:

1.这是我的初始界面(头像更新以后再做)

e94b5726ecb8e61a38f44c28b0e6260a.png

2.我用登录按钮来做连接测试,连接成功注册帐号就改为ok,查询结果放在第一个QLineEdit里面。

下面开始,这样以后我不会了再回来参考下:

1.下载mingw-utils-0.3,百度里面太少了,你去google,很多。(这里我要说明一点就是。很多人在安装MySQL的时候不是完全安装的话就没有opt那个目录,更别说libmysql.lib这个文件了,所以你要完全安装,把原来的卸载掉,或者再装个其它版本,不冲突的。)

2.将其解压,找到bin目录下的reimp.exe,然后拷贝到C:\MinGW\bin目录下,当然你的MinGW装载哪你就相应拷贝到那个bin目录下。

3.由于后面要用到reimp命令,所以把MinGW的bin目录加载到classpath中,如果没有就新建系统环境变量classpath,我的是windows7,如下图:

dd6be376271d548955b877e496e3516f.png

4.进入C:\Program Files\MySQL\MySQL Server 5.0\lib\opt目录,因为我的MySQL是装在这的,这要看你装哪了。进入之后可以看到有libmysql.lib和其它相关文件。

然后执行如下命令:(dos)

1>C:\Program Files\MySQL\MySQL Server 5.0\lib\opt>reimp -d libmysql.lib

2>C:\Program Files\MySQL\MySQL Server 5.0\lib\opt>dlltool -k -d libmysql.def -l libmysql.a

完成之后那个libmysql.a文件就诞生了。这是所需的重要文件。

5.然后我就按照网上的一些说法。

然后转到Qt的目录下(我的为C:\Qt\4.3.2\src\plugins\sqldrivers\mysql).

运行如下命令:

1>qmake -o Makefile "INCLUDEPATH+=D:\MySQL\lib\include" "LIBS+=D:\MySQL\lib\lib\opt\LIBMYSQL.a" mysql.pro

2>mingw32-make

发现错误了。不太清楚怎么回事(应该可以,好好试试)。但是

这样:在mysql.pro(在C:\Qt\4.3.2\src\plugins\sqldrivers\mysql下面)中加入:

INCLUDEPATH+="C:\Program Files\MySQL\MySQL Server 5.1\include"

LIBS+="C:\Program Files\MySQL\MySQL Server 5.1\lib\opt\libmysql.lib"

保存并退出

799099f7e274aa93f14bc5a72dbea6c5.png

6.按照下图所以执行命令:如果你的qmake不能用,那把qt目录下的bin目录加入到PATH中去,我是这样做的。不知道有没有科学性。呵呵

9a3a1334831c7bf8b94ab5cd86b893f8.png

注意目录的进入就好了。然后两条命令就行了。编译个半分钟吧。

7.然后你就会发现在C :\Qt\4.3.4\qt\plugins\sqldrivers下多了四个文件:当然看你安装qt的版本qsqlmysql4.dll

libqsqlmysql4.a

qsqlmysqld4.dll

libqsqlmysqld4.a

这样基本就没啥问题了。记得打开mysql,它自带了test数据库,可以用它做测试,顺便我建立了一张表格:

d21950f144b7e79358f5daee5e823a59.png

那么就开始测试吧。代码如下:(我的是eclipse配置的qt环境)

QSqlDatabase TB = QSqlDatabase::addDatabase("QMYSQL");// becomes the new default conne

TB.setHostName("127.0.0.1");//主机名

TB.setDatabaseName("test");//数据库名

TB.setPort(3306);//端口号

TB.setUserName("root");//用户名

TB.setPassword("123");//密码

if(TB.open())

m_r_acount->setText("OK");

QSqlQuery query(TB);

QString result[100];

int i = 0;

if(TB.open()){

m_r_acount->setText("OK");

bool check = query.exec("SELECT * FROM tt");

if(!query.isActive())

m_r_acount->setText("HH");

if (!check)

{

m_r_acount->setText("FAIL");

TB.close();

}

while(query.next())

{

result[i] = query.value(i).toString();

i++;

}

m_acount->setText(result[1]);

query.clear();

TB.close();

}

else

m_r_acount->setText("NO");

最后搞定了。

7d960de006ccf6a4f5448ff1b7d7808c.png

唉,一开始用sqlite就不爽偶的很。最后还是改回这个,但是早晚都会用sqlite,android,很多都用的。腾讯也用。所以早晚搞定它。现在这样吧。其实还有很多不同的编译方法,比如用qt直接编译。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值