如何在QSqlQuery中使用变量?

问题描述

我想实现一种方法,该方法将在退出程序时检查搜索具有localhost IP地址的条目并删除这些行。

问题是,我不确定如何在Qt中执行此操作,我在搜索时找不到任何具体的东西。有没有一种方法可以在qt中创建sql变量,或者可以在sql查询中使用qt变量?为了让您了解我想做什么,请参见以下内容:

   QSqlQuery query;
   query.exec("DELETE FROM host WHERE ip = <localhost_variable??>");

有什么提示吗?

解决方法

解决方案

您当然可以按照@NgocMinhNguyen的建议直接在查询中插入该值,但是不建议这样做,因为这会打开安全漏洞。

推荐使用的方法是使用query bindings

示例

以下是我为您准备的一个简短示例,以演示如何在您的情况下实施建议的解决方案:

QSqlQuery query;

query.prepare("DELETE FROM host WHERE ip = :localhost");
query.bindValue(":localhost",localhost_variable);
query.exec();
,

QSqlQuery::exec()将字符串作为参数,因此您可以使用:

QSqlQuery query;
query.exec(QString{"DELETE FROM host WHERE ip = %1"}.arg("some_localhost_ip"));

最终查询将是:

DELETE FROM host WHERE ip = some_localhost_ip

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...