Qt 连接 MySQL并编译驱动
创始人
2024-08-02 13:30:48
0

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)比如:

  1. ..\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驱动就编好了。用如下代码进行驱动测试:(这段程序编译完之后不是运行,是调试,不然测试信息出不来)

  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6. #include  
  7. #include  
  8. #include  
  9. int main(int argc, char* argv[])   
  10. {      
  11.          QApplication app(argc, argv);   
  12.          qDebug() << "Available drivers:";   
  13.          QStringList drivers = QSqlDatabase::drivers();   
  14.          foreach(QString driver, drivers)        
  15.                    qDebug() << "\t" << driver;   
  16.          QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");   
  17.          qDebug() << "MYSQL driver valid?" << db.isValid();  

测试结果如下图:

Qt 连接 MySQL并编译驱动

4、MySQL里创建库,创建库时数据库字符集选择gbk编码,创建数据库名为test,单表,表名为testTable,表内属性为name   varchar ;(方便理解代码)

5、用如下代码测试连接数据库并测试写入、读出数据是否成功,并测试数据是否乱码。

  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6. int main(int argc, char **argv)  
  7. {  
  8.          QApplication app(argc, argv);  
  9.          QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk")); //设置tr()编码。  
  10.          QSqlQueryModel *model;  
  11.          QTableView *table=new QTableView;  
  12.          QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");  
  13.          db.setHostName("localhost");   //数据库服务器  
  14.          db.setDatabaseName("test");   //数据库名  
  15.          db.setUserName("root");      //登录名  
  16.          db.setPassword("123456");    //密码  
  17.          if(db.open())  
  18.          {  
  19.                    QMessageBox::information(0,QObject::tr("信息"),  
  20. QObject::tr("数据库连接成功"));  
  21.                    QSqlQuery query;  
  22.                    query.exec(QObject::tr("INSERT INTO bbb VALUES ('柯南')"));  
  23. query.exec("SELECT name FROM testTable");//name为属性名;  
  24. //testTable为表名  
  25.                    model=new QSqlQueryModel;  
  26.                    model->setQuery(query);  
  27.                    model->setHeaderData(0, Qt::Horizontal, QObject::tr("姓名"));  
  28.                    table->setModel(model);  
  29.                    table->show();  
  30.          }  
  31.          else   
  32.          {  
  33.  
  34.                    // 数据库打开失败,显示数据库返回的失败信息  
  35.  
  36.                    QMessageBox::critical(0,QObject::tr("出错"),db.lastError().text());  
  37.          }  
  38.          QApplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit()));  
  39.          return app.exec();  

运行结果如下图:

Qt 连接 MySQL并编译驱动 

小结:关于Qt 连接 MySQL并编译驱动的内容介绍的完了,希望本文呢对你有所帮助!更多内容请参考编辑推荐。

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...