我是 sqlite 和 DB 的初学者,所以如果这是一个愚蠢的问题,请原谅我,但我厌倦了认为我不知道我是否在这里做一些愚蠢的事情。
我创建了一个带有(label-lineEdit)表单的小部件应用程序,用于名称、家庭(我的表格列,其名称是用户)我输入了名称和家庭我按下确定按钮,一切都很好。之后我意识到如果我删除一行,我的 (id)s 将不会自动进入增量序列(比如增加一个),这太难看了,所以我不得不做点什么。我添加了一个新按钮(名为修复表 id),这个按钮同时生成(行 id = 记录索引 +1)所以这是代码(其他东西,比如连接到数据库、驱动程序和其他东西工作完美,没有任何错误,所以我没有把它们放在这里)但是如果你需要它们请告诉:
void MainWindow::on_fix_table_id_clicked()
{
QSqlQuery q;
q.exec("SELECT * FROM user");
QSqlQueryModel *qm = new QSqlQueryModel();
qm->setQuery(q);
int rows = get_rows()-1;
QSqlRecord qr;
QSqlQuery s;
for(int i = 0 ; i <= rows ; i++){
qr = qm->record(i);
QString num = QString::number(i+1);
s.exec("UPDATE user SET id = '"+num+"' WHERE id = '"+qr.value(0).toInt()+"'");
qDebug() << "UPDATE user SET id = '"+num+"' WHERE id = '"+qr.value(0).toString()+"'";
}
}
get_rows() 方法简单地使用
"SELECT count(1) FROM user"
查询并正常工作,这是输出 (qDebug()) :
"UPDATE user SET id = '1' WHERE id = '3'"
"UPDATE user SET id = '2' WHERE id = '4'"
"UPDATE user SET id = '3' WHERE id = '5'"
"UPDATE user SET id = '4' WHERE id = '6'"
"UPDATE user SET id = '5' WHERE id = '7'"
"UPDATE user SET id = '6' WHERE id = '10'"
但即使在 DB 浏览器中也没有任何效果,也没有任何更新,而且我没有任何问题或错误消息
我在 DB Browser for SQLITE 中测试了这个查询,它们运行良好。
请原谅我糟糕的英语,如果这个问题是低级的或类似的问题:)