一:准备一个数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。说实际一点,比如你要做一个登录、注册功能就需要用到数据库。登陆的时候检查用户名密码是否正确,注册时判断用户名是否已经存在,不存在再插入自己的信息等等,这些方面都需要用到。
①安装mysql:直接百度搜索下载,按照要求安装即可。
②安装Navicat:Navicat就是将mysql操作(建表、增删查改等)变为可视化操作,像我等菜鸟连基本的sql语句都不懂的,没有一个可视化操作怎么能行。
③我们用Navicat创建一个sql连接:点击连接选择MySql,连接名随便取,
主机ip:就是我们将要连接到那个主机上,这里由于我们的在自己的电脑装的Mysql,所以填localhost或者127.0.0.1,
端口:3306不改。
用户名:就是你安装mysql时用的,不知道是什么就填root
密码:如果你没改密码,默认为空。
点击连接测试,如果成功就确定。失败的话看什么报错,百度错误,寻找解决办法!
④双击刚刚我们创建的连接,启动它,颜色会变绿。然后右键新建一个数据库起一个名,字符集选个根据需要选,我选的是utf8
⑤我们展开创建的数据库选中表,右键新建一个表,定义一些自己的量,具体操作百度。
⑥补充:如果在编辑器完美连接数据库,而打包后出现无法连接的问题,那么多半是你的数据库libmySQL.dll没有打包进你的程序文件夹。这个dll在你的安装目录下直接搜索就可以找到。然后复制到你的打包文件的exe同级目录就可以了。
二:QT 连接
.pro中添加 QT +=sql
头文件添加:#include <QtSql>#include <QSqlDatabase>
!!注意事项:如果报错:QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7请参照这里
直接上代码:
#define IP "127.0.0.1" #define UserName "root" #define Password "" #define DatabaseName "ironthreshold" ThresholdFromSql::ThresholdFromSql(QObject *parent) : QObject(parent) { db= QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(IP); //127.0.0.1也是一样的,属于本地地址 db.setUserName(UserName); //登陆MYSQL的用户名 db.setPassword(Password); //你自己登陆的密码 db.setDatabaseName(DatabaseName); //登陆数据库的名称 if (!db.open()) {//打开数据库连接 QMessageBox::critical(0, QString::fromLocal8Bit("连接提示"), QString::fromLocal8Bit("无法建立数据库连接,请检查网络!"), QString::fromLocal8Bit("确定")); return; } else { QMessageBox::critical(0, QString::fromLocal8Bit("连接提示"), QString::fromLocal8Bit("MySql Content Success!"), QString::fromLocal8Bit("确定")); QString sclectstr="select sensor_id,speed1,speed2,speed3 from Windspeed";//sql查询语句从风速表中查询一些阈值数据 sclectfrommysql_fs(sclectstr); sclectstr="select sensor_id,speed1,speed2,speed3 from Stress"; sclectfrommysql_yl(sclectstr); sclectstr="select sensor_id,speed1,speed2,speed3 from Shock"; } } void ThresholdFromSql::sclectfrommysql_fs(QString sclectstr) { QSqlQuery query; bool success = query.exec(sclectstr); if(!success){ qDebug() << "查询user失败";return; } else { // 将查询的结果集指针调整到最开始 query.seek(-1); int num=sizeof(query); //总数据个数 num=num/query.numRowsAffected();//列数目 mydata oneFSdata; while(query.next())//一行(循环行) { oneFSdata.sensor_id=query.value(0).toInt(); oneFSdata.first_alert_threshold=query.value(1).toDouble(); oneFSdata.second_alert_threshold=query.value(2).toDouble(); oneFSdata.third_alert_threshold=query.value(3).toDouble(); Alldata_Fs.append(oneFSdata); } //emit finishsclect() } }