void A::on_delBtn_clicked()
{
int rowNum = ui->tableView->currentIndex().row();
model->removeRow(rowNum);
int ok = QMessageBox::warning(this,"提示","確定洗掉當前行?",QMessageBox::No,QMessageBox::Yes);
if(ok == QMessageBox::No){
model->revertAll(); //撤銷
}
else
{
model->submitAll();//執行洗掉
}
}
這樣無法完成洗掉的功能
uj5u.com熱心網友回復:
我覺得這樣撰寫沒有問題但是為什么提交不了uj5u.com熱心網友回復:
QSqlTableModel *model = new QSqlTableModel;model->setTable("table");
QSqlRecord record=model->record();
record.setValue("id",ui->idLineEdit->text());
model->insertRecord(-1,record);
if(model->submitAll()) ; //失敗
同遇到這類問題,新人不知是什么原因。
不過這樣可以:
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("insert into ......");
uj5u.com熱心網友回復:
要重新開Qt才能解決,為什么啊uj5u.com熱心網友回復:
重啟也不能洗掉啊,有沒有別的辦法啊uj5u.com熱心網友回復:
你要看一下你之前的程式初始化model的時候,如果使用了model->removeColumn()函式,之后再操作model時,就不能成功。
uj5u.com熱心網友回復:
請問樓主 這問題解決了么 我也遇到了了 百度都看爛了 還是不行uj5u.com熱心網友回復:
問題解決了,看看資料庫連接是否有關閉。有可能在其他函式里面,你呼叫了一個QSqlDatabase物件的close(),連接斷開后,就不能sunmitAll()了
有2種解決方法,1是,在解構式里面關閉資料庫,建構式里面打開資料庫。其他的函式里不用關心,因為有QSqlTableModel幫忙管理.
2是,在每一個需要對資料庫操作的地方打開,操作完畢立即關閉資料庫,打開和關閉都在一個函式體中實作,注意中間不要提前回傳等。
uj5u.com熱心網友回復:
在navicat中,將表索引的第一列設定為主鍵,不是null就可以解決
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/151318.html
標籤:Qt
上一篇:移動app開發
下一篇:使用微信小程式模板的困惑
