【发布时间】:2010-07-27 13:16:00
【问题描述】:
我在使用 QSqlTableModel 将数据插入 SQLite 数据库时遇到问题。该表是这样创建的:
QSqlQuery createTblSMS("CREATE TABLE sms_tbl("
"isRead BOOLEAN NOT NULL,"
"readTime DATETIME,"
"arrivalTime DATETIME NOT NULL,"
"sender TEXT NOT NULL,"
"receiver TEXT NOT NULL,"
"smsContent TEXT,"
"PRIMARY KEY(arrivalTime, sender, receiver));");
我正在插入这样的记录:
smsModel->insertRecord(-1, sms);
QString error = smsModel->lastError().text();
smsModel->submitAll();
smsModel 是 QSqlTableModel。
例如,如果我输入具有此值的记录 (false, NULL, '2010-06-30 17:27:55', '075710383', 'ONE 142140', 'TOP 15 # 2') - 记录被插入。 在该记录之后,如果放置例如具有此值的记录(false,NULL,'2010-06-30 10:05:29','075710383','ONE 142140','TOP 15 #3') - 也是此记录已插入。
但是如果我尝试重新插入已经在数据库,smsModel 将给出这样的错误:“列到达时间,发送者,接收者不是唯一的,无法获取行” - 这是预期的。 任何其他后续插入唯一记录都将失败,并且模型给了我同样的错误。你知道为什么会这样吗?
【问题讨论】: