本文介绍: private://数据库文件。
目录
基础
现在常用的是sqlite是sqlite 3,我用的是sqlite 3
数据库文件是以db结尾的
查看数据库文件软件下载路径
SQLite administration | SQLite Experthttps://www.sqliteexpert.com/download.html
头文件
#include <QTSql>
模块
QT += core gui sql
编程步骤
- 连接数据库,并且要指定要连接哪一个数据库
- 打开数据库文件,如果文件不存在,则创建
- 创建表
- 增删改查
实战
ui界面
ui界面的成员定义
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QDebug>
private:
QSqlDatabase db;//数据库文件
构造函数初始化准备
//1、连接数据库,指定你要操作的数据库的类型 并且设置数据库文件的名字
//第二个参数不写,指的是该数据库文件 是这个工程默认操作的数据库文件
db = QSqlDatabase::addDatabase("QSQLITE","a1"); //第二个参数指的是连接名称,其实就是标识符
//指定操控的数据库文件,没有则创建,如果用db.open打开文件要密码
db.setDatabaseName("company.db");
//2、打开数据库文件
if(db.open()==false)
{
//db.lastError()错误的原因
qDebug()<<"open error:"<<db.lastError().text();
}
//3、创建表
QString sql = QString("create table if not exists staff(id int unique PRIMARY KEY NOT NULL,name text NOT NULL,address text NOT NULL,salary double NOT NULL);");
//创建一个可以对db执行语句的对象
QSqlQuery query(db);
//执行sql语句
bool ret = query.exec(sql);
if(ret == false)
{
qDebug()<<"create table error "<<query.lastError().text();
}
在ui界面类析构函数里关闭数据库
//关闭数据库
db.close();
添加按钮
//1、获取控件的数据
int id = ui->lineEdit_id->text().toInt();
QString name = ui->lineEdit_name->text();
QString address = ui->lineEdit_address->text();
double salary = ui->lineEdit_salary->text().toDouble();
//2、准备添加sql语句
QString sql = QString("insert into staff values(%1,'%2','%3',%4);").arg(id).arg(name).arg(address).arg(salary);
//创建一个可以对db执行语句的对象
QSqlQuery query(db);
//执行sql语句
bool ret = query.exec(sql);
if(ret == false)
{
qDebug()<<"insert into error "<<query.lastError().text();
}
删除按钮
//以ID作为唯一的标识 ,删除ID所在行的那一条记录
int id = ui->lineEdit_id->text().toInt();
//删除语句
QString sql = QString("delete from staff where id=%1;").arg(id);
//创建一个可以对db执行语句的对象
QSqlQuery query(db);
//执行sql语句
bool ret = query.exec(sql);
if(ret == false)
{
qDebug()<<"delete error "<<query.lastError().text();
}
改按钮
//以ID作为唯一的标识 ,更新其他的数据
int id = ui->lineEdit_id->text().toInt();
QString updateName = ui->lineEdit_name->text();
QString updateAddress = ui->lineEdit_address->text();
double salary = ui->lineEdit_salary->text().toDouble();
//组合更新sql语句
QString sql = QString("update staff set name='%1',address='%2',salary=%3 where id=%4;")
.arg(updateName)
.arg(updateAddress)
.arg(salary)
.arg(id);
//创建一个可以对db执行语句的对象
QSqlQuery query(db);
//执行sql语句
bool ret = query.exec(sql);
if(ret == false)
{
qDebug()<<"update error "<<query.lastError().text();
}
查询按钮
//根据名字查询
QString sql = QString("select * from staff where name="%1";").arg(ui->lineEdit_name->text());
//创建一个可以对db执行语句的对象
QSqlQuery query(db);
//执行sql语句
bool ret = query.exec(sql);
if(ret == false)
{
qDebug()<<"select error "<<query.lastError().text();
}
//查询的结果
//行坐标向下移
while(query.next())
{
//获取数据库query所指的那行的数据
int id = query.value(0).toInt();
QString name = query.value("name").toString();
QString address = query.value("address").toString();
double salary = query.value("salary").toDouble();
//组合字符串
QString text = QString("id:%1 name:%2 address:%3 salary:%4").arg(id).arg(name).arg(address).arg(salary);
//打印
qDebug()<<text;
}
效果
原文地址:https://blog.csdn.net/weixin_59669309/article/details/135902697
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_64785.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。