涉及到数据库,首先安利一个软件Navicat Premium,用来查询数据库很方便 QMysql驱动是Qt sql模块使用的插件,用于与mysql数据库进行通信。要编译QMysql驱动,您需要满足以下条件: 您需要安装MySQL的客户端
涉及到数据库,首先安利一个软件Navicat Premium,用来查询数据库很方便
QMysql驱动是Qt sql模块使用的插件,用于与mysql数据库进行通信。要编译QMysql驱动,您需要满足以下条件:
由于现在版本的QT的Qmysql在安装的时候没有,需要自行去编译这个dll文件出来。
编译出QMysql的相关dll文件的步骤如下:
F:\QT\5.12.9\Src\qtbase\src\plugins\sqldrivers\mysql
然后把下面这一行代码注释掉:并且配置mysql的地址,如下面所示:
Copy
INCLUDEPATH += "E:/mysql/mysql-5.7.27-winx64/include"DEPENDPATH += "E:/mysql/mysql-5.7.27-winx64/include"LIBS += "E:/mysql/mysql-5.7.27-winx64/lib/libmysql.lib"DESTDIR = ../mysql/mylib
Copy
mingw32-make
Copy
F:\QT\5.12.9\msvc2017_64\plugins\sqldrivers
以上就是我们的准备工作:
然后就是如何在QT里面使用Qmysql功能;首先,咱们需要先引入头文件,文件如下:
#include // 连接数据库#include // 数据库连接失败打印报错语句#include // 数据库操作(增删改查)#include
我定义了一下函数名,用来在cpp文件里面写入:
Q_OBJECTpublic: mysql(QWidget *parent); ~mysql(); void insert(QString InserName,int id,QString symbol,QString value); void insert_line(QString InserName,QString id,QString symbol,QString value,QString v,QString despoitory); void data_connect(bool,bool);//连接数据库 void data_test_connect(QStringList);//测试能否成功连接数据库 void close_data(); void creat_table(QString TableName);//创建一个表 void update_table(QString InserName,QString id,QString key,QString value);//更新数据库 void delete_table(QString TableName,QString id);//删除数据库 void find_alltable(QString datebase);//查找所有数据路表格 void find_table_inf(QString TableName);//查询某个表中的数据 void find_table_row(QString TableName,QString row_name,QString col_name);//查询表中某一行的数据 void find_table_col(QString TableName,QString col_name);//表名,列名 void find_table_desposite(QString TableName,QString col_name);//表名,列名查询储位名
对应的函数名里面,实现的功能如下所示:
首先是连接数据库部分功能
QSettings *myini=new QSettings("info.ini", QSettings::IniFormat);//构造QSettings对象,访问ini文件 QStringList info_digitial={"digitial_type","hostname","port","database_name","user_name","password"}; QStringList s; //设置键值对 s.clear(); myini->beginGroup("digital"); for(int i=0;ivalue(info_digitial[i]).toString()); } myini->endGroup(); delete myini; //输出可用数据库 qDebug()<<"available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug()<DDDatabase(s[0]); db.setHostName(s[1]); db.setPort(s[2].toInt()); db.setDatabaseName(s[3]);//数据库名 db.setUserName(s[4]);//用户名 db.setPassword(s[5]);//密码 bool ok = db.open();//打开并连接数据库 if(message_prompt) { if (ok){ QMessageBox::infORMation(this, "infor", "success connect"); } else { QMessageBox::information(this, "infor", "open failed"); qDebug()<<"error open database because"<
我这里是通过读取ini文件里面存储的信息,来获得数据库的设置,主要包含有:
定义一个QSqlDatabase 对象db,实例化它,如果能够成功connect,则会返回一个布尔值,在这里我通过这个bool值来判断,是否成功连接上数据库了。
然后就是在数据库里面创建一个table,并且想里面插入值:
QSqlQuery query; QString sql=QString("create table %1(订单号 text, 料号 text, 品名 text, 数量 text,储位 text);").arg(TableName);//"订单号","料号","品名","数量" qDebug()<<"SQL"<
在表table里面插入数据的功能实现如下所示:
QSqlQuery query; QString str=QString("insert into %4(序号,标签,value) values(%1,'%2','%3')").arg(id).arg(symbol).arg(value).arg(InserName); if(query.exec(str)==false) { qDebug() << "insert failed"; QMessageBox::warning(this,u8"数据插入错误",u8"请检查数据是否正确"); } else { QMessageBox::information(this, "insert", "insert connect"); qDebug() <<"insert success"; }
更新数据的功能实现,代码部分如下所示:
QSqlQuery query; QString updata = QString("update %1 set %2='%3' where 订单号='%4'").arg(InserName).arg(column).arg(value).arg(row); qDebug()<<"--update--"<
前面我们提了如何创建数据库的table和插入数据的功能实现,下面我们就谈一谈这个数据库的删除功能的视线,代码部分,如下所示:
QSqlQuery query; QString sql = QString("delete from %1 where 订单号 = '%2'").arg(TableName).arg(id); if(query.exec(sql)) { qDebug()<<"delete success!"; } else { qDebug()<<"delete failed!"; }
来源地址:https://blog.csdn.net/Helloorld_1/article/details/132297907
--结束END--
本文标题: QT的mysql(数据库)最佳实践和常见问题解答
本文链接: https://www.lsjlt.com/news/389334.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0