C++ 如何使用Qt转储SQLite数据库表(使用BLOB类型)?
如何使用Qt转储SQLite数据库表(使用BLOB类型) 我有一个C++ 如何使用Qt转储SQLite数据库表(使用BLOB类型)?,c++,database,qt,sqlite,qbytearray,C++,Database,Qt,Sqlite,Qbytearray,如何使用Qt转储SQLite数据库表(使用BLOB类型) 我有一个QVector,我将其转换为QByteArray,并将其作为BLOB保存到数据库中 我使用以下函数将QVector序列化为QByteArray: QByteArray Serialize::serialize(QVector<double> data) { QByteArray byteArray; QDataStream out(&byteArray, QIODevice::WriteOnly
QVector
,我将其转换为QByteArray
,并将其作为BLOB保存到数据库中
我使用以下函数将QVector
序列化为QByteArray
:
QByteArray Serialize::serialize(QVector<double> data)
{
QByteArray byteArray;
QDataStream out(&byteArray, QIODevice::WriteOnly);
out << data;
return byteArray;
}
QByteArray序列化::序列化(QVector数据)
{
QByteArray byteArray;
QDataStream out(&byteArray,QIODevice::WriteOnly);
输出>*数据;
}
如上所述,.dump
命令是在sqlite命令行应用程序中实现的,而不是在sqlite库本身中实现的。然后,据我所知,我需要手动创建我的SQL文件
我已经创建了一个函数,用于从所有表中选择所有数据,并创建SQLinsert语句以插入到SQL文件中
问题是我不知道如何将QByteArray
(BLOB)数据插入SQL语句中,以便将来可以将其导入另一个数据库
我正在使用Qt5.3
注意:此问题与相关。我使用了此代码
QSqlQuery insertQuery(myDatabase);
insertQuery.prepare("insert into images (name, data) values (:name, :data);");
insertQuery.bindValue(":name",myImageName);
insertQuery.bindValue(":data",*picture);
insertQuery.exec();
图片类型为QByteArray*这并没有解决具体问题,但我放弃了创建SQL文件。 我使用
byteArray.toHex()
命令生成了SQL文件,只是出于测试目的,但它生成的SQL文件比我的数据库文件(.db)大得多
例如,我的数据库文件有174MB,生成的SQL文件有331MB
然后我放弃了创建SQL文件,我正在导出数据库文件(.db)的副本,然后在需要时将其导入系统
为此,我只需创建一个新连接,并将此数据库文件中的所有内容复制到当前数据库文件中
正如我所说的,这不是对我问题的回答,而是对我的一般问题的一种变通办法
QSqlQuery insertQuery(myDatabase);
insertQuery.prepare("insert into images (name, data) values (:name, :data);");
insertQuery.bindValue(":name",myImageName);
insertQuery.bindValue(":data",*picture);
insertQuery.exec();