日期:2014-05-16  浏览次数:20555 次

解析Qt4.7.3编译MySql数据库驱动,存中文乱码、过滤转义字符问题

问题:使用QSqlDataBase类建立连接MySql数据库驱动加载失败

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QOCI8 QOCI QODBC3 QODBC

QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.

QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.


解决方案:Qt 4.7.3编译MySql驱动

本文讲解Qt 4.7.3编译MySql驱动的内容,Qt 4.7.3在连接MySql数据库的时候可能出现的问题,原来是其他由于权限的问题,只给出了部分数据库的驱动(只有sqlite)其他的驱动只给出了源文件还有文档说明,需要自己编译,那么本文将会帮你解决这些问题。

闲话少说:解决问题首先是要下载安装MYsql还有QT,这个不用多说了,接触过的都熟悉。

编译过程:

(1)dos下进入:D:\Qt\qt\src\plugins\sqldrivers\mysql>

(2)用记事本打开D:\Qt\qt\src\plugins\sqldrivers\mysql\ mysql.pro文件,在第二行加入:  INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 5.1\include" 

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

(3)在dos下输入:

qmake -o Makefile mysql.pro 此时可能也会提示:

  1. WARNING:   
  2. d:\Qt\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated. WARNING:   
  3. d:\Qt\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated. WARNING:   
  4. d:\Qt\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated

但是好像对最后的结果没有影响,然后使用nmake命令编译,会在C:\Qt\qt-4.7.3\plugins\sqldrivers目录下生成

qsqlmysql4.dll

qsqlmysql4.lib

qsqlmysqld4.dll

qsqlmysqld4.lib

这时编译你的工程就可以找到驱动了。


问题:使用QSqlquery类操作数据库存储QString中文数据到MySql数据库出现乱码

解决:

MySQL会出现中文乱码的原因不外乎下列几点:
1.server本身设定问题,例如还停留在latin1
2.table的语系设定问题(包含character与collation)
3.客户端程式(例如php)的连线语系设定问题