Я пытаюсь удалить строку из QSqlQueryModel следующим образом:Как удалить строку из базы данных SQLite с помощью QSqlQueryModel?
void MainWindow::deleteRecord()
{
int row_index= ui->tableView->currentIndex().row();
model->removeRow(row_index);
}
Но это не работает.
Я попытался следующие, а также:
void MainWindow::deleteRecord()
{
int row_index= ui->tableView->currentIndex().row();
if(!db_manager->delete_record(QString::number(row_no))){
ui->appStatus->setText("Error: data deletion ...");
} else{
ui->appStatus->setText("Record deleted ...");
}
}
Где в db_manager, функция delete_recod (QString row_no) является:
bool DatabaseManager::delete_record(QString row_index)
{
QSqlQuery query;
query.prepare("DELETE FROM personal_Info WHERE ref_no = (:ref_no)");
query.bindValue(":ref_no",row_index);
if (!query.exec())
{
qDebug() << "Error" << query.lastError().text();
return false;
}
return true;
}
Но также не работает. В обеих попытках приложение не сбой и ошибки SQLite.
Что я делаю неправильно и как я могу это исправить?
Btw, когда я использую второе решение, строка удаляется из «TableView» и из базы данных SQLite. Но только если я жестко закодировал свой основной ключ. Я не могу получить primary_key при выборе строки. Я получаю только индекс выбранной строки. Точнее, это именно моя проблема. –
Ну, QSqlTableModel не принимает setQuery, и он разбился как ' 'setQuery' является защищенным членом QSqlTableModel'. Я не могу выполнить «select query» или «delete query» и передать их модели! ... Мне нужно передать запрос моей модели, и именно поэтому я начал использовать 'QSqlQueryModel' по той причине, что могу написать свой собственный запрос. К сожалению, теперь я знаю, что это модель только для чтения. !! .. проблема все еще есть. –
** Что вы на самом деле пытаетесь сделать? ** Не то, что вы пытаетесь решить, какова ваша проблема в первую очередь. – peppe