Qt 连接 MySQL并编译驱动是本文呢要介绍的内容,Qt开发环境并可正常使用(假设用的是VS2008+ QtVisualStudioIntegrationv1.43for.VS.2003.2005)一切操作均在windows下进行。
1、安装MySQL
下载MySQL安装程序,安装时选择Custom方式,选择安装目录,目录***不要有空格,不要有中文,选择安装include和lib文件。其它的就没什么了。Sqlyog是一个MySQL的图形界面管理工具,可以安装上,方便数据库操作。
2、将安装好的MySQL目录下的include文件夹里的文件(头文件)复制到编译工具的include文件夹下,再将MySQL目录下的lib\opt里的文件复制到编译工具的lib文件夹下,简而言之就是要让编译器能找到MySQL里相应的文件。(该路径也可在生成工程文件时添加给qmake)比如:
- ..\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=D:\MySQL\include" "LIBS+=D:\MySQL\lib\opt\libmysql.lib"
3、打开VS2008 命令提示符,将目录切换到Qt\src\plugins\sqldrivers\mysql\,运行qmake
完了在运行nmake。不出错的话MySQL的驱动就编好了。用如下代码进行驱动测试:(这段程序编译完之后不是运行,是调试,不然测试信息出不来)
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QSqlError>
- #include <QApplication>
- #include <QSqlDatabase>
- #include <QStringList>
- #include <QMessageBox>
- #include <QDebug>
- int main(int argc, char* argv[])
- {
- QApplication app(argc, argv);
- qDebug() << "Available drivers:";
- QStringList drivers = QSqlDatabase::drivers();
- foreach(QString driver, drivers)
- qDebug() << "\t" << driver;
- QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
- qDebug() << "MYSQL driver valid?" << db.isValid();
- }
测试结果如下图:
4、MySQL里创建库,创建库时数据库字符集选择gbk编码,创建数据库名为test,单表,表名为testTable,表内属性为name varchar ;(方便理解代码)
5、用如下代码测试连接数据库并测试写入、读出数据是否成功,并测试数据是否乱码。
- #include <QtGui>
- #include <QtSql>
- #include <QTableView>
- #include <QString>
- #include <QObject>
- int main(int argc, char **argv)
- {
- QApplication app(argc, argv);
- QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk")); //设置tr()编码。
- QSqlQueryModel *model;
- QTableView *table=new QTableView;
- QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
- db.setHostName("localhost"); //数据库服务器
- db.setDatabaseName("test"); //数据库名
- db.setUserName("root"); //登录名
- db.setPassword("123456"); //密码
- if(db.open())
- {
- QMessageBox::information(0,QObject::tr("信息"),
- QObject::tr("数据库连接成功"));
- QSqlQuery query;
- query.exec(QObject::tr("INSERT INTO bbb VALUES ('柯南')"));
- query.exec("SELECT name FROM testTable");//name为属性名;
- //testTable为表名
- model=new QSqlQueryModel;
- model->setQuery(query);
- model->setHeaderData(0, Qt::Horizontal, QObject::tr("姓名"));
- table->setModel(model);
- table->show();
- }
- else
- {
- // 数据库打开失败,显示数据库返回的失败信息
- QMessageBox::critical(0,QObject::tr("出错"),db.lastError().text());
- }
- QApplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit()));
- return app.exec();
- }
运行结果如下图:
小结:关于Qt 连接 MySQL并编译驱动的内容介绍的完了,希望本文呢对你有所帮助!更多内容请参考编辑推荐。