QT链接ACCESS数据库
源代码链接
首先附上工程代码,方面大家自取。
链接: https://pan.baidu.com/s/1u9Xro3XuxV-Pxp54f6x33Q?pwd=r8iv 提取码: r8iv
一、创建数据库
1、创建以UserInfo.accdb命名的数据库。
2、打开新创建的数据库,并点击表,将表改名为户籍信息
3、 分别给表添加如下字段:姓名、国籍、电话、性别
二、QT的界面设计
三、链接数据库的代码的编写
引入头文件
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
数据库查询
QString connectionName = "myConnection";QSqlDatabase db;if (QSqlDatabase::contains(connectionName)) {db = QSqlDatabase::database(connectionName);} else {db = QSqlDatabase::addDatabase("QODBC", connectionName);db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=./UserInfo.accdb");db.setUserName("");db.setPassword("");}// 检查连接是否有效(如果之前已关闭,这里会重新打开)if (!db.open()) {qDebug() << "连接失败:" << db.lastError().text();return;}qDebug() << "Database connected successfully!";QString str_UserName = ui->Edit_text->text();bool found;// 执行数据库操作(例如查询)QSqlQuery query(db); // 使用成员变量 db 关联的连接query.prepare("SELECT * FROM 户籍信息 WHERE 姓名 = :username");query.bindValue(":username", str_UserName);if (!query.exec()) {// 查询失败QMessageBox::warning(this, "登录失败", "数据库查询失败!");return;}found = false;while (query.next()) {// 至少找到一条匹配的记录found = true;if(found){qDebug()<<query.value("姓名").toString();ui->Edit_name->setText(query.value("姓名").toString());qDebug()<<query.value("国籍").toString();ui->Edit_country->setText(query.value("国籍").toString());qDebug()<<query.value("电话").toString();ui->Edit_phone->setText(query.value("电话").toString());qDebug()<<query.value("性别").toString();if(query.value("性别").toString() == "男"){ui->Button_man->setChecked(true);ui->Button_woman->setChecked(false);}else if(query.value("性别").toString() == "女"){ui->Button_man->setChecked(false);ui->Button_woman->setChecked(true);}}}// 操作完成后关闭连接(可选,根据需求决定是否保持连接)db.close();
添加数据
QString connectionName = "myConnection";QSqlDatabase db;if (QSqlDatabase::contains(connectionName)) {db = QSqlDatabase::database(connectionName);} else {db = QSqlDatabase::addDatabase("QODBC", connectionName);db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=./UserInfo.accdb");db.setUserName("");db.setPassword("");}// 检查连接是否有效(如果之前已关闭,这里会重新打开)if (!db.open()) {qDebug() << "连接失败:" << db.lastError().text();return;}qDebug() << "Database connected successfully!";QString str_UserName = ui->Edit_name->text();bool found;// 执行数据库操作(例如查询)QSqlQuery query(db); // 使用成员变量 db 关联的连接query.prepare("SELECT * FROM 户籍信息 WHERE 姓名 = :username");query.bindValue(":username", str_UserName);if (!query.exec()) {// 查询失败QMessageBox::warning(this, "登录失败", "数据库查询失败!");return;}found = false;while (query.next()) {// 至少找到一条匹配的记录found = true;}if (!found) {// 插入操作示例query.prepare("INSERT INTO 户籍信息 (姓名, 国籍, 电话, 性别) VALUES (:value1, :value2, :value3, :value4)");query.bindValue(":value1", ui->Edit_name->text());query.bindValue(":value2", ui->Edit_country->text());query.bindValue(":value3", ui->Edit_phone->text());if(ui->Button_man->isChecked() == true){query.bindValue(":value4", "男");}else{query.bindValue(":value4", "女");}if (!query.exec()) {qDebug() << "Insert error:" << query.lastError().text();} else {db.close();}}
删除数据
QString connectionName = "myConnection";QSqlDatabase db;if (QSqlDatabase::contains(connectionName)) {db = QSqlDatabase::database(connectionName);} else {db = QSqlDatabase::addDatabase("QODBC", connectionName);db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=./UserInfo.accdb");db.setUserName("");db.setPassword("");}// 检查连接是否有效(如果之前已关闭,这里会重新打开)if (!db.open()) {qDebug() << "连接失败:" << db.lastError().text();return;}qDebug() << "Database connected successfully!";QString str_UserName = ui->Edit_name->text();// 执行数据库操作(例如查询)QSqlQuery query(db); // 使用成员变量 db 关联的连接query.prepare("DELETE FROM 户籍信息 WHERE 姓名 = :username");query.bindValue(":username", ui->Edit_text->text());if (query.exec()) {ui->Edit_name->setText("");ui->Edit_country->setText("");ui->Edit_phone->setText("");ui->Button_man->setChecked(false);ui->Button_woman->setChecked(false);}
改数据
QString connectionName = "myConnection";QSqlDatabase db;if (QSqlDatabase::contains(connectionName)) {db = QSqlDatabase::database(connectionName);} else {db = QSqlDatabase::addDatabase("QODBC", connectionName);db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=./UserInfo.accdb");db.setUserName("");db.setPassword("");}// 检查连接是否有效(如果之前已关闭,这里会重新打开)if (!db.open()) {qDebug() << "连接失败:" << db.lastError().text();return;}qDebug() << "Database connected successfully!";QString str_UserName = ui->Edit_name->text();// 执行数据库操作(例如查询)QSqlQuery query(db); // 使用成员变量 db 关联的连接query.prepare("UPDATE 户籍信息 SET 姓名 = :Value1, 国籍 = :Value2, 电话 = :Value3 WHERE 姓名 = :name");query.bindValue(":name", ui->Edit_text->text());query.bindValue(":Value1", ui->Edit_name->text());query.bindValue(":Value2", ui->Edit_country->text());query.bindValue(":Value3", ui->Edit_phone->text());if (query.exec()) {qDebug()<<"执行成功";}else{qDebug()<<"执行失败";}