如何在OCCI中添加fieldname作为变量

时间:2012-03-05 18:11:58

标签: c++

在下面的C ++代码中,我正在根据搜索值更新emp表的字段。但是这段代码不能正常工作。我输出中止了。

void UpdateData(string field_name,string updated_value,string search_value)
{
  stmt->createStatement("UPDATE emp SET :1=:2 where search=:3");
  stmt->setString(1,field_name);
  stmt->setString(2,updated_value);
  stmt->setString(3,search_value);
  stmt->executeUpdate();
}

在我的程序中,用户将选择他们必须更新的字段,并将所选字段名称作为field_name参数传递给函数。 updated_value是用户输入的新值,search_value是用于查找相应记录的搜索键。

如果我愿意的话       stmt-> createStatement(“UPDATE emp SET field_name =:2 where search =:3”);

它的工作..

但问题是,字段名称会根据用户选择而改变。我怎么能克服这个问题。还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

您无法使用statement->setString()方法设置字段的名称;只有变量的值可以这样绑定。 我知道只有两个解决方案来实现这一点(两者都不是特别好):

  1. 动态创建语句字符串

    string statement ="UPDATE emp SET " + fieldname + "=:1 where search=:2";
    
  2. 准备单个语句,每个语句影响一个字段并在运行时选择

    const string STATEMENT_FIELD_CITY = "UPDATE emp SET CITY=:1 where search=:2";
    const string STATEMENT_FIELD_LAND = "UPDATE emp SET LAND=:1 where search=:2";