问题描述
我想实现一种方法,该方法将在退出程序时检查搜索具有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