用查询中的变量替换表名

Replacing table name with a variable in a query

本文关键字:替换 变量 查询      更新时间:2023-10-16

我有以下代码。我的桌子叫tableu。我想替换'tableu'与一个变量,将持有表的名称。我该怎么表达呢?

   query.prepare(
                "INSERT INTO tableu (village, weight, diet, age)"
                "VALUES (:village, :weight, :diet, :age)"
                );

如果您想将表名从tableu更改为NewTableName,可以使用以下任何语法:

query.prepare(
              "RENAME tableu TO NewTableName"
             );

query.prepare(
              "ALTER TABLE tableu RENAME TO NewTableName"
             );
更新:

可能是OP在找这个

QString tableName = QString("tableu");
QString sqlQuery = QString("INSERT INTO %1 (village, weight, diet, age) VALUES (:village, :weight, :diet, :age)").arg(tableName);

我不是100%确定您想要什么,但这段代码将允许您拥有一个变量,该变量可能包含放置在查询中的不同表名

  char sBuffer [1024];
  char sQueryTable[] = "tableu";
  sprintf(sBuffer , "INSERT INTO %s (village, weight, diet, age) VALUES (:village, :weight, :diet, :age)", sQueryTable);
  query.prepare(sBuffer);

在这里阅读有关sprint和格式化字符串的内容

注意:您也可以使用std::strings,并将包含表名的变量和字符串的其余部分连接在一起