将变量插入到 SQLite 查询

inserting a variable to a SQLite query

本文关键字:SQLite 查询 插入 变量      更新时间:2023-10-16

我有一个声明如下。

 const QString createSQL = "CREATE TABLE customer (x INTEGER PRIMARY KEY ASC, y, z);" ;

我还有一个变量

 QString name="name1";

我需要将表"客户"的名称更改为 name1。如何将变量插入到上面的 sqlite 查询中?

这是

直接从文档中取出的。

// Execute query with positional binding using named placeholders
QVariantList contactValues;
contactValues << 1 << "Mike" << "Chepesky";
DataAccessReply reply = sc.executeAndWait(
    "insert into contact (id, firstname, lastname) values (:id, :firstname, :lastname)",
    contactValues);

// Execute query with positional binding using positional (?) placeholders
QVariantList contactValues;
contactValues << 1 << "Mike" << "Chepesky";
DataAccessReply reply = sc.executeAndWait(
    "insert into contact (id, firstname, lastname) values (?, ?, ?)",
    contactValues);

查看文档/来源

要重命名表,请使用ALTER TABLE

"ALTER TABLE customer RENAME TO " + name

如果只需要将表名插入到查询中,

"CREATE TABLE " + name + "(x INTEGER ...

我不相信您可以使用绑定变量更改表名,但您可以这样做:

QString name = "tableName";
QString createSQL = QString("CREATE TABLE %1 (x INTEGER PRIMARY KEY ASC, y, z)").arg(name);

要回答 H2CO3 的评论,您绝对可以绑定值:

QString queryStr = QString("SELECT * FROM TABLE %1 WHERE col = :selected").arg(name);
QSqlQuery query(qSqlDatabase);
query.prepare(queryStr);
query.bindValue(":selected", "Selected Value");