Qt中 将结构体存储进数据库中的Blob类型中,并取出

Bolb类型可以用QT的QByteArray进行读取。

结构体的存储:

1.定义结体:

struct MyStruct
{
	int a;
	int b;
};

2.将结构体放进QByteArray中:

MyStruct str;
str.a = 12;
str.b = 33;

QByteArray byteArray;
byteArray.resize(sizeof(MyStruct));
memcpy(byteArray.data(), &str, sizeof(MyStruct));//这里也可以用QDataStream进行处理

3.存入数据库中:

QSqlDatabase d = QSqlDatabase::addDatabase("QSQLITE");//以sqlite为例
d.setDatabaseName("XX.db");//文件路径

QSqlQuery q;
q.prepare("insert into Table(ID, Data) values(:ID, :Data)");//这里有多种写法,可查Qt文档
q.bindValue(":ID", 1);
q.bindValue(":Data", QVariant(byteArray));
q.exec();

结构体的读取

读取就很简单了:

QSqlQuery q("select * from Table");
while (q.next())
{
        QByteArray byteArr = q.value("Data").toByteArray();
        
        MyStruct mstr;
        memcpy(&mstr, byteArr.data(), sizeof(MyStruct));
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值