日期:2014-05-16 浏览次数:20582 次
问题:使用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 此时可能也会提示:
- WARNING:
- d:\Qt\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated. WARNING:
- d:\Qt\qt\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped ba ckslashes are deprecated. WARNING:
- 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)的连线语系设定问题