Qt 没有查询无法获取行

Qt 没有查询无法获取行,qt,sqlite,Qt,Sqlite,我正试图编写一段代码,从QTableView获取所选项目并将其从数据库中删除 QModelIndex index = ui->tableView->selectionModel()->currentIndex(); QString value= ui->tableView->model()->data(index).toString(); qDebug() << "Value : " << value; QSqlDatabase d

我正试图编写一段代码,从QTableView获取所选项目并将其从数据库中删除

QModelIndex index = ui->tableView->selectionModel()->currentIndex();

QString value= ui->tableView->model()->data(index).toString();
qDebug() << "Value : " << value;

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("TestDatabase.db");

if(!db.open())
{
    qDebug() << db.lastError();
    qFatal("Failed to connect");
}
QSqlQuery qry;
qry.prepare("DELETE * FROM movies WHERE Title='"+value+"'");

if(!qry.exec())
{
    QMessageBox::critical(this, tr("error::") , qry.lastError().text());

}

db.close();
但是,我遇到了“无查询无法获取行”错误。如果你能帮我解决这个问题,我将不胜感激


更新:问题是我在DELETE之后放置了“*”。

您的代码受到SQL注入的影响,因为您没有正确使用prepare。这也是您出现错误的原因。要以正确的方式使用prepare,它后面必须至少有一个bindValue。在您的情况下,类似于:

QSqlQuery qry;
qry.prepare("DELETE * FROM movies WHERE Title = :title");
qry.bindValue(":title", value);
if(!qry.exec()) //...
bindValue注意正确转义值,并且不会造成任何伤害

…如果您认为SQL注入不是问题,请与以下人员聊天: