赞
踩
目录
现在常用的是sqlite是sqlite 3,我用的是sqlite 3
数据库文件是以db结尾的
查看数据库文件软件下载路径
SQLite administration | SQLite Expert
https://www.sqliteexpert.com/download.html
#include <QTSql>
QT += core gui sql

- #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();
- }

- //关闭数据库
- 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;
- }




Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。