我有一個插入新的QSqlRecord到Postgresql數據庫的問題。目標表的定義如下:QSqlRecord將默認值列設置爲空查詢
create table samochod(
samochod_id integer primary key default nextval('samochod_id_seq'),
marka varchar(30),
poj_silnika numeric,
typ_silnika silnik_typ,
liczba_osob smallint
);
和記錄插入的代碼是:
QSqlRecord rec = model->record();
rec.setGenerated("samochod_id", false);
rec.setValue("marka", ui.brandEdit->text());
rec.setValue("poj_silnika", ui.volSpin->value());
rec.setValue("typ_silnika", ui.engineCombo->currentText());
rec.setValue("liczba_osob", ui.passengersSpin->value());
bool ok = model->insertRecord(-1,rec);
所有我想要做的是插入一個新的記錄,使得SQL爲我設置其samochod_id
,但儘管我設置isGenerated
將其與消息崩潰錯誤:
"ERROR: null value in column "samochod_id" violates not-null constraint
QPSQL: Unable to create query"
我應該怎麼做才能讓QSqlRecord離開一代samochod_id
數據庫?
如果我不使用Qt的SQL類,它會爲我生成查詢,我會按照您的說法完成它。我的問題是如何讓他們做我想做的事,而不是如何自己動手做。 – KCH 2012-04-13 20:07:32
你可以註釋掉'rec.setGenerated(「samochod_id」,false);'看看它是怎麼回事? – vyegorov 2012-04-13 20:09:47
這很奇怪,但它不會改變應用程序行爲。文檔說,留下這條線未註釋應使數據庫爲我生成此字段。 – KCH 2012-04-13 20:12:17