编译MySQL驱动 与 Qt 连接 MySQL

0     假设你已经编译安装好了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();

}

运行结果如下图:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值