QSqlTableModel을 사용하여 SQLite 데이터베이스에 데이터를 삽입하는 데 문제가 있습니다. 테이블은 다음과 같이 작성됩니다첫 번째 오류 후 QSqlTableRecord를 사용하여 레코드를 계속 삽입 할 수 없습니다.
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')과 함께 레코드를 넣으면이 레코드가 삽입됩니다.
하지만 이미 삽입 된 레코드 (false, NULL, '2010-06-30 17:27:55', '075710383', 'ONE 142140', 'TOP 15 # 2')를 다시 삽입하려고하면 데이터베이스, smsModel이 같은 오류를 줄 것이다 : "열 arrivalTime, 발신자, 수신기가 고유하지 않습니다 행을 가져올 수 없습니다"- 예상된다. 다른 고유 한 레코드를 나중에 삽입하면 모델에 오류가 발생합니다. 이 일이 왜 일어 났는지 전혀 모르십니까?
http://doc.qt.io/qt-4.8/qsqltablemodel.html#submitAll 예 내가 그 기본 키 기록이 존재하는 경우 I는 기본 키와 레코드를 추가 할 수 없음을 알고있다. 문제는 다음과 같습니다. 데이터베이스에 이미있는 레코드를 추가하려고하면 고유 기본 키가있는 레코드를 추가 할 수 없습니다. – user261882