源代码链接
首先附上工程代码,方面大家自取。
链接: 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()<<"执行失败";
}