如何使用Qt转储SQLite数据库表(使用BLOB类型)?
我有一个QVector<double>
,我要转换QByteArray
并保存到数据库中的BLOB。
我使用下面的函数序列化QVector<double>
到QByteArray
:
QByteArray Serialize::serialize(QVector<double> data)
{
QByteArray byteArray;
QDataStream out(&byteArray, QIODevice::WriteOnly);
out << data;
return byteArray;
}
当我从数据库加载BLOB字段时,我使用反序列化功能QVector<double>
再次获取。
void Serialize::deserialize(QByteArray byteArray, QVector<double> *data)
{
QDataStream in(&byteArray, QIODevice::ReadOnly);
in >> *data;
}
如前所述这里,该.dump
命令在执行sqlite的命令行应用程序,而不是在SQLite的库本身。然后,据我了解,我需要手动创建SQL文件。
我已经创建了一个函数,用于从所有表中选择所有数据,并创建SQL插入语句以插入到SQL文件中。
问题是我不知道如何将QByteArray
(BLOB)数据插入到SQL语句中,该数据将来可以导入到另一个数据库中。
我正在使用Qt 5.3。
注意:这个问题与此有关。
这没有解决特定的问题,但是我放弃了创建SQL文件的操作。我使用该byteArray.toHex()
命令生成SQL文件只是为了测试目的,但是它生成的SQL文件比我的数据库文件(.db)大得多。
例如,我的数据库文件有174 mb,生成的SQL文件有331 mb。
然后,我放弃了创建SQL文件的工作,而是导出数据库文件(.db)的副本,然后在需要时将其导入到系统中。
为此,我只需创建一个新连接并将该数据库文件中的所有内容复制到导出到我当前的数据库文件中即可。
正如我所说,这不是我的问题的答案,但这是解决我的一般问题的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句