目录

一、表格数据类型示例

在pro里面QT += core gui sql

二、头文件包含

三、增删改查操作

3.1 查询select

3.2多表联合查询 join on图片格式jpg,png

3.3 插入 insert

3.4 更新修改update

3.5 删除delete


一、表格数据类型示例

主要有三个表格,其中images存的是照片,关键字都是user,可以通过user来多表联合查询

建立的DataBase文件为c++类型,继承自QObject

在pro里面QT += core gui sql


二、头文件包含

#include
#include
#include
#include
#include
#include
#include
#include
#include

注意:在构造函数里面调用create_database(),必须先连接数据库才能对数据进行操作。

// 创建数据库,连接数据库void Database::create_database(){QSqlDatabase db;// 避免重复连接数据库if(QSqlDatabase::contains("qt_sql_default_connection")) {db = QSqlDatabase::database("qt_sql_default_connection");} else {db = QSqlDatabase::addDatabase("QSQLITE");db.setHostName("127.0.0");db.setDatabaseName("people.db"); // 设置数据库名称db.setUserName("user");db.setPassword("pwssword");}if(!db.open()) {qDebug() << "database open error:" << db.lastError();;} else {qDebug() << "database ok!";}QSqlQuery query(db);if(db.tables().contains("users")) {// qDebug() << "table users already exists!";} else { // 表格不存在,则创建表格users// 创建表格users,1为普通用户,2为管理者QString cmd = "create table users(user varchar(50) primary key, pwd varchar(50),phone varchar(50), email varchar(50), identity varchar(20));";if(!query.exec(cmd)) {qDebug() << "create users table error!";}}// 主要用来保存头像图片if(db.tables().contains("images")) {//qDebug() << "table images already exists!";} else {// 表格不存在,则创建表格imagesif(!query.exec("create table images(user varchar(50) primary key, image BLOB)")){qDebug() << "create images table error!";}}// 个人界面,里面有入职年份部门,性别年龄的信息if(db.tables().contains("informations")) {//qDebug() << "table informations already exists!";} else {// 表格不存在,则创建表格informationsif(!query.exec("create table informations(user varchar(50) primary key, year varchar(50), section varchar(50), sex varchar(50), age varchar(50));")){qDebug() << "create informations table error!";}}}

三、增删改查操作

3.1 查询select

bool selecting(QString user0);// 查询用户是否存在bool selecting_root(QString user0); // 查询是否有管理员权限bool selecting(QString user0, QString pwd0);// 查询用户名和密码是否正确
// 查询用户存不存在,存在返回truebool Database::selecting(QString user0){QSqlQuery query;// 执行查询语句QString S = QString("select * from users where user='%1';").arg(user0);// query是指向结果集以外的,我们可以利用query.next(),当第一次执行这句代码时,query便指向了结果集的第一条记录。if(query.exec(S)) {if(query.next()) {return true;} else {return false;}}}// 查询用户权限,管理员返回truebool Database::selecting_root(QString user0){QSqlQuery query;// 执行查询语句QString S = QString("select identity from users where user='%1';").arg(user0);// query是指向结果集以外的,我们可以利用query.next(),当第一次执行这句代码时,query便指向了结果集的第一条记录。if(query.exec(S)) {if(query.next()) {return true;} else {return false;}}}// 查询用户存不存在,存在返回truebool Database::selecting(QString user0, QString pwd0){QSqlQuery query;//执行查询语句QString S = QString("select * from users where user='%1' and pwd='%2';").arg(user0).arg(pwd0);// query是指向结果集以外的,我们可以利用query.next(),当第一次执行这句代码时,query便指向了结果集的第一条记录。if(query.exec(S)) {if(query.next()) {//qDebug() << "查询到用户";return true;} else {return false;}}}

3.2多表联合查询 join on图片格式jpg,png

多表联合查询 join on

QMap show(QString user0);//map容器,存储员工信息
QList< QMap > show(); //显示所有用户的大部分信息,便于管理员管理

图片格式jpg,png等
QByteArray selectImage(QString user0);//读取数据库的用户头像

// map容器,存储员工信息QMap Database::show(QString user0){QMap map; //map容器,存放key-valueQSqlQuery query;//执行查询语句// join多表查询,主键一致QString S = QString("select * from users join informations on users.user=informations.user where users.user='%1'").arg(user0);query.exec(S);while (query.next()) {map.insert("phone", query.value(2).toString());map.insert("email", query.value(3).toString());map.insert("root", query.value(4).toString());map.insert("year", query.value(6).toString());map.insert("section", query.value(7).toString());map.insert("sex", query.value(8).toString());map.insert("age", query.value(9).toString());}return map;}// 显示所有用户的大部分信息,便于管理员管理QList< QMap > Database::show(){QList<QMap  > lst;//内里为map容器的list容器QMap map; //key-value都为qstring类型的map容器QSqlQuery query;//执行查询语句// join多表查询,主键一致QString S = QString("select * from users join informations on users.user=informations.user");query.exec(S);while (query.next()) {map.insert("name", query.value(0).toString());map.insert("phone", query.value(2).toString());map.insert("email", query.value(3).toString());map.insert("root", query.value(4).toString());map.insert("year", query.value(6).toString());map.insert("department", query.value(7).toString());map.insert("sex", query.value(8).toString());map.insert("age", query.value(9).toString());lst.append(map);//插入一行数据map.clear();//清空一行数据}return lst;}// 读取数据库的用户头像QByteArray Database::selectImage(QString user0){QSqlQuery query;//执行查询语句// 从数据库读取存入的照片显示到按钮处QByteArray outByteArray;QString cmd = QString("select * from images where user='%1'").arg(user0);query.exec(cmd);while (query.next()) {outByteArray = query.value(1).toByteArray();}return outByteArray;}

3.3 插入 insert

//插入用户注册基础信息
bool inserting(QString user0, QString pwd0, QString phone0, QString email0, QString identify0);
// 注册,添加用户名和头像到数据库
void instering(QString user0, QByteArray imagepath);
// 初始赋值入职信息和基本信息
void inserting(QString user0);
// 插入基本信息表,用于管理者添加用户
void insertings(QString user0, QString year0, QString section0, QString sex0, QString age0);

// 前提该用户不存在 注册,添加新的用户信息加入数据库bool Database::inserting(QString user0, QString pwd0, QString phone0, QString email0, QString identify0){QSqlQuery query;//执行查询语句QString cmd = QString("insert into users values('%1', '%2', '%3', '%4', '%5')").arg(user0).arg(pwd0).arg(phone0).arg(email0).arg(identify0);qDebug() << cmd;if(query.exec(cmd)) {qDebug() << "insert ok!";return true;} else {qDebug() <

3.4 更新修改update

bool updating(QString user0, QString pwd0); //更新密码
void updating(QString user0, QByteArray imagepath); //更新头像

bool updating_root(QString user0, QString root); //管理员修改权限
bool updating(QString user0, QString year0, QString section0, QString sex0, QString age0);//个人界面修改入职信息,性别年龄
bool updating_person(QString user0, QString phone0);//修改个人信息,邮箱电话等

// 修改密码bool Database::updating(QString user0, QString pwd0){QSqlQuery query;//执行查询语句QString cmd = QString("update users set pwd='%1' where user='%2'").arg(pwd0).arg(user0);if(query.exec(cmd)) {return true;}return false;}// 用户名,更新头像到数据库void Database::updating(QString user0, QByteArray imagepath){// 插入数据库 images为数据库表image为存储照片字段 为Blob类型QString strQSL = QString("update images set image=? where user='%1'").arg(user0);QSqlQuery query;query.prepare(strQSL);query.addBindValue(imagepath);if(!query.exec()) {qDebug() << "image update error!";}}// 管理员修改权限bool Database::updating_root(QString user0, QString root){QSqlQuery query;QString cmd = QString("update users set identity='%1' where user='%2'").arg(root).arg(user0);if(query.exec(cmd)) {qDebug() << "用户权限修改成功 yes";return true;} else {qDebug() << "用户权限修改 nonono";return false;}}// 修改入职信息,年份职位bool Database::updating(QString user0, QString year0, QString section0, QString sex0, QString age0){QSqlQuery query;//执行查询语句QString cmd = QString("update informations set year='%1', section='%2', sex='%3', age='%4' where user='%5'").arg(year0).arg(section0).arg(sex0).arg(age0).arg(user0);if(query.exec(cmd)) {return true;}return false;}// 修改个人信息,邮箱电话等bool Database::updating_person(QString user0, QString phone0){QSqlQuery query;//执行查询语句QString cmd = QString("update users set phone='%1', email='%2' where user='%3'").arg(phone0).arg(user0);if(query.exec(cmd)) {return true;}return false;}

3.5 删除delete

bool deleting(QString user0, QString pwd0); //删除用户
bool deleting(QString user0);//删除用户的所有信息

// 前提是该用户存在,执行删除命令,成功返回truebool Database::deleting(QString user0, QString pwd0){QSqlQuery query;//执行查询语句QString cmd = QString("delete from users where user='%1' and pwd='%2'").arg(user0).arg(pwd0);if(query.exec(cmd)) {return true;}return false;}// 删除用户的所有信息bool Database::deleting(QString user0){QSqlQuery query;//执行查询语句// join多表查询,主键一致QString S = QString("delete from users join informations on users.user=informations.user");if(query.exec(S)) {return true;}return false;}