Qt QList<QString>序列化用于数据库

3

我有一个QList列表,想要将其插入到数据库中。经过一些谷歌搜索,我没有找到任何序列化器方法。是否有任何方法/思路可以将列表数据序列化到数据库中?


1
如果你指的是关系型数据库,那么最好的方法不是尝试序列化它。这就是你拥有表格和列的原因。 - Lukáš Lalinský
你没有找到这个吗?http://lists.qt.nokia.com/pipermail/qt-interest/2011-July/035068.html - Mark Fraser
1
@Dewsworld:解决方案管用了吗? - MD Sayem Ahmed
@dewsworld:出了什么问题?你是如何将它插入数据库的?在序列化时遇到了问题吗? - MD Sayem Ahmed
1
@SayemAhmed 当我使用查询获取它们时,我得到的数据大小为0,这些数据是我使用Streaming插入的。顺便说一句,我已经将插入方式从StringList转换为String,虽然有点丑陋,但目前能够满足我的需求。 - Dewsworld
显示剩余3条评论
2个回答

3
使用 QStringList 而不是 QList<QString>,你觉得怎么样?
QStringList numberList_;    // instead of QList<QString>, use this
QString myString1 = "Hello";
QString myString2 = "World";
numberList_ << myString1;
numberList_ << myString2;

QByteArray byteArray;
QBuffer buffer(&byteArray);
QDataStream out(&buffer);
out << numberList_;

也许 QList<QString> 也可以替换 QStringList。如果不行,你可以很容易地将其转换为 QStringList
参考 QDataStreamQBufferQByteArrayQStringList

0

这里有另一个更为简洁的选项:

QString serialize(QStringList stringList)
{
  QByteArray byteArray;
  QDataStream out(&byteArray, QIODevice::WriteOnly);
  out << stringList;
  return QString(byteArray.toBase64());
}

QStringList deserialize(QString serializedStringList)
{
  QStringList result;
  QByteArray byteArray = QByteArray::fromBase64(serializedStringList.toUtf8());
  QDataStream in(&byteArray, QIODevice::ReadOnly);
  in >> result;
  return result;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接