我想使用QSql在SQLite数据库中存储枚举。 我有以下类:如何在SQLite数据库中存储枚举
partydao.h:
class PartyDao : public QObject
{
public:
enum partyType { typeCompany, typePerson };
private:
Q_OBJECT
Q_ENUMS(partyType)
Q_PROPERTY(partyType type READ type WRITE set_type)
// other declarations
};
Q_DECLARE_METATYPE(PartyDao::partyType)
partydao.cpp:
#include "partydao.h"
static int id = qRegisterMetaType<PartyDao::partyType>("partyType");
我插入这样的:
PartyDao p;
p.setProperty("type", QVariant::fromValue(PartyDao::typePerson));
QSqlQuery query;
query.prepare("INSERT INTO party (type) values (:type)");
qDebug() << p.property("type").isNull();
query.bindValue(":type", p.property("type"));
query.exec();
Althou gh qDebug()打印“false”(即,属性是不是 null),空值存储在数据库中。
我试过用TEXT和INTEGER类型的列没有成功。
你能告诉我我做错了什么吗?
编辑:
我刚刚检查,并持有的QVariant我的枚举声称,它不能被转换为QString的或INT(canConvert<int>()
和canConvert<QString>()
返回false)。有没有添加此转换的方法?
如果第一个枚举器没有初始值,则默认为0。 – zarzych 2010-12-10 08:51:38