Qt QSqlRecord未将0插入数据库

Qt QSqlRecord未将0插入数据库,qt,Qt,我在QSqlRecord中遇到了一个奇怪的问题,它插入null而不是“0”。 下面是说明问题的示例代码: #include <QCoreApplication> #include <QtSql> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // Filename for sqlite database QString filename = "./test.db"; // Mak

我在QSqlRecord中遇到了一个奇怪的问题,它插入null而不是“0”。 下面是说明问题的示例代码:

#include <QCoreApplication>
#include <QtSql>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

// Filename for sqlite database
QString filename = "./test.db";

// Make sure the database doesn't already exisit
if (QFile::exists(filename)){
    QFile::remove(filename);
}

// Connect to the database
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(filename);

db.open();

// Create test table
QSqlQuery query(db);

bool result;
result = query.exec("CREATE TABLE IF NOT EXISTS 'test' ('key' TEXT, 'value' INTEGER)");
db.commit();
// Insert the test value into the database
QSqlTableModel model(0, db);

// Set the table
model.setTable("test");

// Set up the data
QSqlRecord record = model.record();
record.setValue("key", "first");
record.setValue("value", 1);
result = model.insertRecord(-1, record);
model.submitAll();

record.setValue("key", "second");
record.setValue("value", 0);
result = model.insertRecord(-1, record);
model.submitAll();

record.setValue("key", "third");
record.setValue("value", 2);
result = model.insertRecord(-1, record);
model.submitAll();
// Commit changes and close database]
db.commit();
db.close();
}
注意,第二个条目没有值

我使用的是Qt5.0.1,Windows 7上的MingW4.7。

是否
submitAll()
返回true?
QSqlQueryModel::lastError()
说明了什么?submitAll()返回true,model.lastError()不返回错误(QSqlError(-1,“,”))
sqlite> select * from test;
first|1
second|
third|2