1、打印Qt支持的数据库驱动,看是否有MYSQL数据库驱动
qDebug() << QSqlDatabase::drivers();
有打印结果可知,没有MYSQL数据库的驱动
2、下载MYSQL数据库驱动,查看下面的文章配置,亲测,可以成功
Qt6 配置MySQL数据库的驱动_qt6 mysql-CSDN博客
3、连接数据库,如果打印open success说明MYSQL环境安装成功。
QSqlDatabase db =QSqlDatabase::addDatabase ( "QMYSQL") ;//连接数据库
db.setHostName("127.0.0.1"); //数据库服务器IP
db.setUserName("root") ; //数据库用户名
db.setPassword("1234");//密码
db.setDatabaseName("qtDb") ; //使用哪个数据库
//打开数据库
if( !db.open())//数据库打开失败
{
qDebug()<<"open err ";
return;
}
qDebug()<<"open success ";
4、我创建的表名是 test,然后有两个字段,使用的一些sql语句如下
show databases;
create database qtDb;
use qtDb;
create table test(
name character(20),
age int);
select * from test;
insert into test values("lh",18);
update test set age=20 where name="lh" limit 1;
5、创建QT的UI界面
6、给ui界面控件命名
7、插入,生成插入按钮的槽函数
void Widget::on_insertPushButton_clicked()
{
QString namestr = ui->insertNameLineEdit->text();
int num = ui->insertAgeLineEdit_2->text().toInt();
QString str = QString("insert into test values('%1', '%2')").arg(namestr).arg(num);
QSqlQuery query;
query.exec(str);
qDebug()<<"insert success ";
}
8、测试插入函数,测试成功
9、查询代码, 将name作为关键词查询
void Widget::on_selectPushButton_2_clicked()
{
QString searchName = ui->selectNameLineEdit_3->text();
QString str = QString("select *from test where name = '%1'").arg(searchName);
QSqlQuery query;
query.exec(str);
QString name;
int age;
while (query.next())
{
name = query.value(0).toString();
age = query.value(1).toInt();
}
// QString str2 = "name:" + name +"\r\n" +"age:" + QString::number(age);
QString str2 = QString("name:%1 \n age:%2").arg(name).arg(age);
ui->selectTextEdit->setText(str2);
}
10、查询表格中所有数据
void Widget::on_selectAllPushButton_3_clicked()
{
QString str = QString("select *from test");
QSqlQuery query;
query.exec(str);
QString name;
int age;
QString text;
while (query.next())
{
name = query.value(0).toString();
age = query.value(1).toInt();
text = text + "name:" + name +" " +"age:" + QString::number(age) +"\r\n";
}
ui->selectAllTextEdit_2->setText(text);
}
11、完整工程代码
链接:https://pan.baidu.com/s/1ocgu1S8-FSFZFz4X8w7aRg?pwd=8888
提取码:8888