qt中的数据库操作和数据库的加密存储(SQLite三)

一、qt中的数据库操作

1. Qt中加入sql数据库模块

QT += sql

在这里插入图片描述

2.添加并且连接数据库

(1)添加数据库

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
   qDebug()<<"add sql error";
}
static QSqlDatabase addDatabase(const QString& type,/*要连接的数据库驱动名称*/
                                const QString& connectionName = QLatin1String(defaultConnection));/*数据库连接名称*/

如果要连接多个数据库,那么connectionName就要自己指定

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
   qDebug()<<"add sql error";
}
QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE""hqd_test");
db2.setDatabaseName(":memory:");
if (!db2.open()) {
   qDebug()<<"add sql error";
}

(2)连接数据库

QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);只要数据连接并且打开,后期可以在Qt工程中任意位置都可以使用(单例),在创建执行对象QSqlQuery会自动去绑定对应的数据

QSqlQuery query;//默认绑定默认连接名的数据库
query.exec("insert into test values(1)");
//可以通过connectionName获取数据库"hqd_test"
QSqlQuery queryHqd(QSqlDatabase::database("hqd_test"));
queryHqd.exec("insert into test values(100)");

3.打开数据库并且通过QSqlQuery执行sql语句

QSqlQuery query;
query.exec(创建表格/更新/删除/等sql语句);

例:

QString  value = ui->lineEdit->text();
QSqlQuery query;//默认绑定默认连接名的数据库
QString sqlStr = QString("insert into test values(%1)").arg(value);
if(!query.exec(sqlStr))
{
   qDebug()<<"insert error";
   qDebug()<<query.lastError().text();//获取最后一条错误记录
}

4. QSqlQuery查询操作

在QSqlQuery类中提供了多个函数来操作这个集合,需要注意这个集合中的记录是从0开始编号的。最常用的操作有:

seek(int n) :query指向结果集的第n条记录;
first() :query指向结果集的第一条记录;
last() :query指向结果集的最后一条记录;
next() :query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录;
previous() :query指向上一条记录,每执行一次该函数,便指向相邻的上一条记录;
record() :获得现在指向的记录;
value(int n) :获得属性的值。其中n表示你查询的第n个属性,
at() :获得现在query指向的记录在结果集中的编号。

例:

QString select = "select * from password";
QString select_where = QString("select * from password where username='%1' and password='%2'")
        .arg(ui->userEdit->text()).arg(ui->passEdit->text());

QSqlQuery query;
if(!query.exec(select_where))
{
    qDebug()<<query.lastError().text();
}
//获取查询的数据
if(query.next())
{
    qDebug()<<"有数据";
    ui->label->setText("验证通过");
}else {
    qDebug()<<"无数据";
    ui->label->setText("验证失败");
}

while(query.next())
{
    QSqlRecord record = query.record();
    qDebug()<<record.value(1).toString()<<record.value(2).toString();
}

5. QSqlQuery类数据绑定

QSqlQuery query;
//这里的(:id,:name)可以用(?,?)) 代替) 
//注意与sqlte3 API接口里面的绑定区别
query.prepare("insert into student (id, name)  values (:id, :name)");
query.bindValue(0, 5);  //序号从0开始,API接口里面的绑定区别1开始 sqlite3_bind_int
query.bindValue(1, "sixth");//sqlite3_bind_text
query.exec();

6. QSqlQuery批处理操作

QSqlQuery q;
query.prepare("insert into student values (?, ?)");
QVariantList ints;
ints << 10 << 11 << 12 << 13;
query.addBindValue(ints);
QVariantList names;
names << "AAAA" << "BBBB" << "CCCC" << QVariant(QVariant::String);//这里加个空,与前面个数一致
query.addBindValue(names);
query.execBatch()) //进行批处理,如果出错就输出错误

Qt中数据库QSqlDataBase不能跨线程

7.事务处理

QSqlDatabase::transaction()  创建事务 BEGIN
    QSqlDatabase::database().transaction(); //开启事务
QSqlDatabase::commit() 提交事务       COMMIT
    QSqlDatabase::database().commit();
QSqlDatabase::rollback() 事务回滚     ROLLBACK

二、Qt数据库实现用户名密码登录, 密码数据加密

文件传输–>生成文件MD5码,与文件同时发送

密码加密—>生成MD5, sha1, sha256, sha512

MD5码是一个32位的十六进制数

QCryptographicHash

1.第一种方式

(1)创建QCryptographicHash 对象–要指定加密方式

QCryptographicHash  mdHash(加密方式)

(2)添加要加密的数据 addData

mdHash.addData(要加密的数据)

(3)获取加密数据result

QByteArray array = mdHash.result();

(4)把array转为十六进制

QString pwd = array.toHex();

2.第二种方式

static QByteArray hash(const QByteArray &data, Algorithm method);
参数:data --- 要加密的数据
     method --- 加密方式

返回值:加密后的数据
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Linux QtSqlite加密是指在Linux系统上使用QtSqlite库对数据库进行加密处理的过程。QtSqlite是基于SQLite的C++库,用于在Qt框架下操作数据库SQLite是一种轻型、嵌入式的数据库引擎,广泛用于各种应用程序的数据存储和管理。 要在Linux上使用QtSqlite加密功能,可以借助Qt提供的QtCipherSqlitePlugin插件。QtCipherSqlitePlugin是一个用于对SQLite数据库进行加密和解密的插件,它可以在数据库打开和关闭的过程对数据进行加密和解密操作,保护数据库的机密性。 使用QtCipherSqlitePlugin进行加密时,先需要在Qt应用程序加载该插件,并将其注册到数据库驱动。然后,可以通过设置数据库加密密钥和算法类型来指定加密方式。常见的加密算法包括AES和DES等。 加密后的数据库文件在存储和传输过程更加安全,无法直接被读取和修改。在使用数据库时,需要提供正确的密钥才能解密数据进行操作。而没有密钥的人则无法对数据库进行读写操作,保证了数据的机密性和安全性。 总而言之,Linux QtSqlite加密QtCipherSqlitePlugin的使用可以有效保护数据库的安全。通过对数据库进行加密处理,可以防止敏感数据的泄漏和篡改,为应用程序和用户提供更高的数据安全保障。 ### 回答2: Linux QtSQLITE加密是指在Linux操作系统使用QtSQLITE库进行数据库操作时,对数据库进行加密的过程。QtSQLITE是一个用于在Qt应用程序访问和操作SQLite数据库的插件。 QtCipherSQLitePlugin是一个在Qt应用程序使用的SQLite数据库加密插件。它提供了一种轻松而安全的方法来对SQLite数据库进行加密和解密操作。使用QtCipherSQLitePlugin,我们可以通过在连接到数据库之前设置加密密钥来保护数据库的数据。这样,即使数据库文件被非法访问,也无法获取到其的明文数据。 要使用QtCipherSQLitePlugin,首先需要在项目添加相应的插件文件,并在代码进行相关设置。然后,我们可以在代码使用QtSQLITE库提供的API进行数据库操作,如创建表、插入数据、查询数据等。在连接到数据库之前,我们可以通过使用QtCipherSQLitePlugin提供的接口设置加密密钥,以保护数据库的数据。 使用Linux QtSQLITE加密QtCipherSQLitePlugin可以有效地保护数据库的敏感数据。通过加密数据库,即使数据库文件被非法获取,也无法直接获取到其的明文数据。这样可以提高数据的安全性,并保护用户的隐私。 总结来说,Linux QtSQLITE加密QtCipherSQLitePlugin是一种用于在Linux操作系统使用QtSQLITE库对SQLite数据库进行加密的解决方案。它提供了一种简单而安全的方法来保护数据库的数据,加强数据的安全性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值