网站上传到万网主机,中国建设银行广东分行网站,淄博哪有培训做网站的,设计公司画册设计哪家好涉及到数据库#xff0c;首先安利一个软件Navicat Premium#xff0c;用来查询数据库很方便 QMysql驱动是Qt SQL模块使用的插件#xff0c;用于与MySQL数据库进行通信。要编译QMysql驱动#xff0c;您需要满足以下条件#xff1a;
您需要安装MySQL的客户端库和开发头文件…涉及到数据库首先安利一个软件Navicat Premium用来查询数据库很方便 QMysql驱动是Qt SQL模块使用的插件用于与MySQL数据库进行通信。要编译QMysql驱动您需要满足以下条件
您需要安装MySQL的客户端库和开发头文件这些文件通常随MySQL的安装程序一起提供或者可以从MySQL官网下载。请注意您需要根据您的Qt架构32位或64位选择正确的数据库库文件。您需要获取Qt的源代码这些代码可以从Qt官网下载。您可以选择与您的Qt版本相匹配的源代码也可以选择最新的源代码。您需要使用qmake和make工具来编译QMysql驱动这些工具通常随Qt的安装程序一起提供或者可以从Qt官网下载。请注意您需要根据您的操作系统和编译器选择正确的工具。
由于现在版本的QT的Qmysql在安装的时候没有需要自行去编译这个dll文件出来。
编译出QMysql的相关dll文件的步骤如下
打开Qt命令提示符进入Qt源代码目录下的qt/src/plugins/sqldrivers/mysql文件夹例如
F:\QT\5.12.9\Src\qtbase\src\plugins\sqldrivers\mysql然后把下面这一行代码注释掉并且配置mysql的地址如下面所示 Copy
运行qmake命令指定MySQL的头文件和库文件的路径例如 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/mylibCopy
运行make或mingw32-make命令根据您的编译器类型如果是在VS环境下使用sql那么就只需要在VS的编译器下面进行编译选择合适的命令例如
mingw32-makeCopy
如果编译成功您将在当前目录下看到一个名为qsqlmysql.dll的文件这就是QMysql插件。您需要将这个文件复制到您运行Qt应用程序时使用的Qt目录下的qt/plugins/sqldrivers文件夹中例如
F:\QT\5.12.9\msvc2017_64\plugins\sqldrivers 以上就是我们的准备工作
然后就是如何在QT里面使用Qmysql功能首先咱们需要先引入头文件文件如下
#include QtSql/QSqlDatabase // 连接数据库
#include QtSql/QSqlError // 数据库连接失败打印报错语句
#include QtSql/QSqlQuery // 数据库操作增删改查
#include QSqlQueryModel
我定义了一下函数名用来在cpp文件里面写入 Q_OBJECT
public: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 *myininew 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 i0;iinfo_digitial.size();i){s.append(myini-value(info_digitial[i]).toString());}myini-endGroup();delete myini;//输出可用数据库qDebug()available drivers:;QStringList drivers QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug()driver;//输出中含有MySQL那么恭喜你说明你的qt有MySQL驱动了QSqlDatabase db QSqlDatabase::addDatabase(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 becausedb.lastError().text();}}
我这里是通过读取ini文件里面存储的信息来获得数据库的设置主要包含有 定义一个QSqlDatabase 对象db实例化它如果能够成功connect则会返回一个布尔值在这里我通过这个bool值来判断是否成功连接上数据库了。
然后就是在数据库里面创建一个table并且想里面插入值
QSqlQuery query;QString sqlQString(create table %1(订单号 text, 料号 text, 品名 text, 数量 text,储位 text);).arg(TableName);//订单号,料号,品名,数量qDebug()SQLsql;//创建表是否成功if (!query.exec(sql))//.exec(),作用是开启一个循环执行一个事件相当于while(1){qDebug() QString::fromLocal8Bit(creat table failed:) query.lastError();}else{qDebug() QString::fromLocal8Bit(creat table success!);}
在表table里面插入数据的功能实现如下所示 QSqlQuery query;QString strQString(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--updata;if (!query.exec(updata)){qDebug() QString::fromLocal8Bit(updata failed!) query.lastError();}else{qDebug() QString::fromLocal8Bit(updata success!);}
前面我们提了如何创建数据库的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!;}