用查询中的变量替换表名

时间:2011-08-12 06:28:23

标签: c++ string qt

我有以下代码。我的表名为'tableu'。我想用一个保存表名的变量替换'tableu'。我怎么能代表那个。

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

2 个答案:

答案 0 :(得分:3)

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

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

OR

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);

答案 1 :(得分:2)

我不是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);

了解sprinft和格式化字符串here

注意:您也可以始终使用std :: strings,并将字符串连接起来,保存表名和字符串的其余部分