Qt实现Mysql数据库的连接,查询,修改,删除,增加功能

Qt实现Mysql数据库的连接,查询,修改,删除,增加功能

  • 安装Mysql数据库,QtCreator

Mysql选择Mysql Server 8.1版本安装。

Mysql Server 8.1安装过程

1.首先添加网络服务权限:

Win+R键输入compmgmt.msc进入,计算机管理-系统工具-本地用户和组-组-Administrator

点击添加,在输入对象名称来选择栏,输入NETWORK SERVICE,点击检查名称,确认完成后退出。

  1. 下载Mysql8.1安装包,安装mysql。

Mysql8.1安装包下载地址:

https://download.csdn.net/download/qq_32663053/89163322

另外Mysql5.7.23版本的安装包下载地址:

https://download.csdn.net/download/qq_32663053/89163442

安装过程如下:

运行安装包:

选择安装类型:

选择安装产品:

执行安装:

安装完成,进行下一步:

Execute

执行下一步:

一直next的直到输入密码:

继续next到最后Mysql安装完毕。

配置环境变量:右击"我的电脑"-->"属性"-->"高级系统设置"-->"高级"-->"环境变量",在打开的窗口中选择 "系统变量" 下的 "新建" 按钮创建环境变量。

尝试数据库关闭和开启:

"Windows+R"-->输入"cmd"-->Enter

到此Mysql数据库配置完成。

附带有Mysql Workbench,能够图形化处理数据库的功能软件。

  1. 下载QtCreator并加载Mysql驱动

QtCreator下载:由于QtCreator安装包过多,这里不提供。

安装过程:

安装过程选择source文件夹,否则无法配置mysql驱动。以下是我选的选项:

以后直接next直到安装结束。

  • 加载Mysql驱动
  1. 打开mysql.pro文件夹编译并生成mysql驱动文件

Mysql.pro文件位置如下(是本人的),不同的人不同位置。

用QtCreator打开mysql.pro文件配置mysql.pro文件。

圈出来的是要编写的代码,第一个注释掉mysql,第二个是将mysql的include文件和lib文件引入进来DESTDIR代表的是生成的驱动文件。代码写完执行锤子操作。执行结束后生成lib文件,也就是数据库驱动文件。

将数据库驱动文件复制到sqldriver文件夹下:我的目录如下:

将mysql文件夹下的libmysql.dll和libmysql.lib文件复制到qt的bin目录,以下是需要转移的目录

这样我们就可以连接mysql数据库了。

  • Qt连接Mysql数据库

编写代码如下连接Mysql数据库

  1. 首先在工程.pro文件下添加执行sql语句的代码:
  1. 定义一个全局变量QSqlDatabase db;用来打开数据库和操作数据库的变量。

如果连接成功则输出"数据库连接成功!"否则输出"数据库连接失败"+错误原因。

  • 数据库的查询操作

结果图:点击显示数据按钮,实现数据库表数据的显示。

QSqlQuery query=this->queryDatabase("select * from user");

//将数据库的查询结果集赋值给query

QSqlQueryModel *model=new QSqlQueryModel(ui->tableView);

//定义一个querymode绑定ui->tableView

model->setQuery(query);//将查询结果绑定到模型上

ui->tableView->setModel (model);

//设置ui->tableView的mode。

这是显示数据的界面。

  • 数据库的删除操作

数据库的删除代码如下:

QString username = ui->lineEdit_3->text();

//从lineedit获得删除的主键数据进行预删除

QSqlQuery query;

//QString username=ui->lineEdit->text();

//QSqlQuery query;

QString str=QString("delete from user where username='%1'").arg(username);

//编写删除sql语句

if (!query.exec(str)) { //执行删除语句

qDebug() << "删除失败:" << query.lastError().text();

} else {

qDebug() << "删除成功";

}

结果图如下:

  • 数据库的增加操作

数据库的增加数据是在另一个界面实现的,我们需要添加一个ui如下:

这样我们在dialog.cpp实现数据库的增加数据

QString username=ui->lineEdit->text();

QString password=ui->lineEdit_2->text();

//从lineedit读入要插入的数据

QSqlQuery query;

query.prepare("insert into sys.user values(?,?)");

query.addBindValue(username);

query.addBindValue(password);

//预执行sql语句,并在语句中插入列数据

if(!query.exec()){//执行增加数据语句

qDebug()<<"无法插入数据";

QMessageBox::information(NULL, "增加表数据","增加失败",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

}else{

QMessageBox::information(NULL, "增加表数据","增加成功",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

Dialog::close();

}

//如果增加失败,停留在子界面

//如果增加成功,返回主界面

//点击返回主界面按钮可以返回

实现的结果图:

  • 数据库的更新操作

更新操作,仍需要在子界面实现,子界面创建如六中的操作,操作是一样的。

首先是连接数据库然后输入主键的数值,找到所有列的信息:

db1=QSqlDatabase::addDatabase("QMYSQL");

QString host="localhost";

QString dbName="sys";

QString user="root";

QString password="12345";

this->connectToDatabase(host,dbName,user,password);

//以上是连接数据库

QString username = ui->lineEdit_3->text();

//获得主键信息

QSqlQuery query=this->queryDatabase(QString("select * from user where username = '%1'").arg(username));

//执行查询操作

while (query.next()) {

QString result = query.value(0).toString();

QString result1 = query.value(1).toString();

ui->lineEdit->setText(result);

ui->lineEdit_2->setText(result1);

ui->lineEdit->setReadOnly(true);

//将查询到的信息输出到lineedit中。

qDebug() << result<<" "<<result1;

}

然后我们修改非主键的列值。进行接下来的更新操作。

QString username = ui->lineEdit_3->text();

QString password = ui->lineEdit_2->text();

//获取所有列的数据,准备增加表数据

QSqlQuery query;

QString str=QString("update user set password = ? where username = ?");

//编写sql语句

query.prepare(str);

query.addBindValue(password);

query.addBindValue(username);

//预执行sql语句,并为未知量赋值

if (!query.exec()) {//执行更新语句

qDebug() << "更新失败:" << query.lastError().text();

QMessageBox::information(NULL, "更新表数据","更新失败",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

} else {

qDebug() << "更新成功";

QMessageBox::information(NULL, "更新表数据","更新成功",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

Dialog1::close();

//db1.close();

}

//若成功,提示更新成功,并返回主界面

//若失败,停留在子界面。

实现的结果图:

以上就是QtCreator对Mysql数据库的增加、修改、删除、查询的操作。

相关推荐
喜欢猪猪5 小时前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
zhangphil7 小时前
Android adb查看某个进程的总线程数
android·adb
s_daqing12 小时前
华为手机建议使用adb卸载的app
adb·华为·智能手机
是程序喵呀2 天前
MySQL备份
android·mysql·adb
暗碳2 天前
adb无线连接手机后scrcpy连接报错ERROR: Could not find any ADB device
adb·智能手机
咸芝麻鱼3 天前
Android Studio | 连接手机设备后,启动App时出现:Waiting For DebuggerApplication (App名)...
android·adb·智能手机·android studio
Future_yzx4 天前
Mybatis中使用MySql触发器报错:You have an error in your SQL syntax; ‘DELIMITER $$
adb
牵牛老人5 天前
Qt调用adb对嵌入式设备的配置文件进行修改,写入多行内容
数据库·qt·adb
LuckyTHP5 天前
蓝叠模拟器adb连接并配置网络代理
网络·adb
Epiphanywh6 天前
Ubuntu 20.04 卸载和安装 MySQL8.0
linux·ubuntu·adb