Qt数据库
Qt SQL模块是Qt提供的一个访问数据库的接口,支持多种平台下使用不同类型的数据库,在这个过程中,数据库驱动 起到了很大的作用,它负责与不同的数据库进行通信,有了数据库驱动,我们才能使用不同类型的数据库。
在qt中使用数据库要在工程文件中添加
QT += sql
- QSqlDatabase 数据库处理与连接
- QSqlQuery 执行和操作 SQL 语句的方法
- QSqlRecord 数据库记录
- QSqlResult 访问来自特定 SQL 数据库的数据
- QSqlError 提供 SQL 数据库错误信息
1、创建一个数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);
创建一个连接,参数为数据库驱动类型和连接名称。如果链接名称默认不写,在后期整个qt应用中可以使用,通过Qt中的接口比如QSqlQuery操作数据库
//创建数据库连接句柄
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","test");
//设置数据库名称
db.setDatabaseName("my.db");
//打开数据库
if(!db.open())
{
qDebug()<<db.lastError().text(); //输出错误信息
}
2、执行SQL语句
QSqlQuery常用函数
只要在数据库连接并且打开后可以在中任意位置通过QSqlQuery操作数据
//构造函数没有参数就自动去关联到默认连接名的数据库
QSqlQuery query(QSqlDatabase::database("test"));
//执行创建表格的语句
if(!query.exec("create table student(id int, name text)"))
{ qDebug()<<query.lastError().text(); }
获取select命令的返回内容
//1.创建一个QSqlQuery对象
QSqlQuery query;
//2.定义sql命令
QString sql = QString(ui->textEdit->toPlainText());
//3.执行sql命令
if(query.exec(sql))
{
qDebug()<<"执行成功";
}
else
{
qDebug()<<"执行失败:"<<query.lastError().text();
}
//(1)定义数据记录的对象,拿到select命令的执行结果
QSqlRecord record = query.record();
//(2)可以得到返回的数据字段个数
int n = record.count();
//(3)显示数据
while(query.next())
{
int num = query.value(0).toInt();
QString name = query.value(1).toString();
int age = query.value(2).toInt();
double score = query.value(3).toDouble();
qDebug()<<num<<name<<age<<score;
for (int i=0; i<n; i++)
{
// 字段名record.fieldName(i) 字段值query.value(i)
qDebug()<<record.fieldName(i)<<":"<<query.value(i);
}
}
3、加密
QCryptographicHash 加密
QByteArray btArray;//字符串MD5算法加密
btArray.append(str);//加入原始字符串
QCryptographicHash hash(QCryptographicHash::Md5); //Md5加密算法
hash.addData(btArray); //添加数据到加密哈希值
QByteArray resultArray =hash.result(); //返回最终的哈希值
QString md5 =resultArray.toHex();//转换为16进制字符串
ByteArray resultArray =hash.result(); //返回最终的哈希值
QString md5 =resultArray.toHex();//转换为16进制字符串