目录

一、表格数据类型示例

在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 {

// 表格不存在,则创建表格images

if(!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 {

// 表格不存在,则创建表格informations

if(!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);  // 查询用户名和密码是否正确

// 查询用户存不存在,存在返回true

bool 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;

}

}

}

// 查询用户权限,管理员返回true

bool 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;

}

}

}

// 查询用户存不存在,存在返回true

bool 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-value

QSqlQuery 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 > 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() << "insert error!";

return false;

}

return false;

}

// 注册,添加用户名和头像到数据库

void Database::instering(QString user0, QByteArray imagepath)

{

// 插入数据库 images为数据库表 image为存储照片字段 为Blob类型

QString strQSL = QString("insert into images(user, image) values('%1',?)").arg(user0);

QSqlQuery query;

query.prepare(strQSL);

query.addBindValue(imagepath);

if(!query.exec()) {

qDebug() << "image insert error!";

}

}

// 登录成功,立马插入其他信息数据,将部门年龄赋值为0

void Database::inserting(QString user0)

{

QString year0 = "0";

QString section0 = "0";

QString sex0 = "0";

QString age0 = "0";

QSqlQuery query; //执行查询语句

QString S = QString("select * from informations where user='%1';").arg(user0);

// query是指向结果集以外的,我们可以利用query.next(),当第一次执行这句代码时,query便指向了结果集的第一条记录。

if(query.exec(S)) {

if(!query.next()) {

// 用户不存在,职工信息赋初始值0

QString cmd = QString("insert into informations values('%1', '%2', '%3', '%4', '%5')").arg(user0).arg(year0).arg(section0).arg(sex0).arg(age0);

// "insert into informations values('7788', '0', '0', '0', '0')"

qDebug() << cmd;

if(query.exec(cmd)) {

qDebug() << "chushi insert ok!";

} else {

qDebug() << "chushi insert error!";

}

}

}

}

// 插入基本信息表,用于管理者添加用户

void Database::insertings(QString user0, QString year0, QString section0, QString sex0, QString age0)

{

QSqlQuery query; //执行查询语句

QString cmd = QString("insert into informations values('%1', '%2', '%3', '%4', '%5')").arg(user0).arg(year0).arg(section0).arg(sex0).arg(age0);

qDebug() << cmd;

if(query.exec(cmd)) {

qDebug() << "insert ok!";

} else {

qDebug() << "insert error!";

}

}

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);                            //删除用户的所有信息

// 前提是该用户存在,执行删除命令,成功返回true

bool 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;

}

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: