转换 QString 以在 SQL 查询中使用
Convert a QString for using in SQL queries
我想根据用户输入生成 SQL 查询,以便将一些数据插入数据库。
用户可以输入任何内容。 Qt 中有没有一种方法可以将此类用户输入转换为字符串类型的值字段?
"The user may input anything."
这并没有给我们太多帮助,但我可以给你一个例子,说明我将如何设置一个基本的插入查询。
// I assume you already have a QSqlDatabase object called 'db'
QSqlQuery query(db);
QString s = "INSERT INTO table (colA, colB) VALUES (:valA, :valB);"
query.prepare(s);
// You only need to prepare the query once
// To actually insert values into colA & colB, do this:
query.bindValue(":valA", QString("stuff to put in colA"));
query.bindValue(":valB", QString("other stuff for colB"));
query.exec();
query.finish(); // you probably don't even need this
bindValue
方法将 QVariant
作为其第二个参数(我在示例中使用了字符串,但您可以使用变体类型支持的任何内容)。您只需确保值的类型对数据库中的相关列有意义。
此外,我在示例中使用了 PostgreSQL 的语法。我认为这是标准的,但您可能需要更改参数绑定(:valA
:valB
内容)以匹配您的数据库引擎所期望的内容。
我想根据用户输入生成 SQL 查询,以便将一些数据插入数据库。
用户可以输入任何内容。 Qt 中有没有一种方法可以将此类用户输入转换为字符串类型的值字段?
"The user may input anything."
这并没有给我们太多帮助,但我可以给你一个例子,说明我将如何设置一个基本的插入查询。
// I assume you already have a QSqlDatabase object called 'db'
QSqlQuery query(db);
QString s = "INSERT INTO table (colA, colB) VALUES (:valA, :valB);"
query.prepare(s);
// You only need to prepare the query once
// To actually insert values into colA & colB, do this:
query.bindValue(":valA", QString("stuff to put in colA"));
query.bindValue(":valB", QString("other stuff for colB"));
query.exec();
query.finish(); // you probably don't even need this
bindValue
方法将 QVariant
作为其第二个参数(我在示例中使用了字符串,但您可以使用变体类型支持的任何内容)。您只需确保值的类型对数据库中的相关列有意义。
此外,我在示例中使用了 PostgreSQL 的语法。我认为这是标准的,但您可能需要更改参数绑定(:valA
:valB
内容)以匹配您的数据库引擎所期望的内容。