c++ - 如何在 OCCI 中添加字段名作为变量

标签 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");

它的工作..

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

最佳答案

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

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

关于c++ - 如何在 OCCI 中添加字段名作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571683/

相关文章:

c++ - 在 C++ STL 中使用 auto 关键字

c++ - CXXSources——它们是什么?

c++ - 这是否因为两次查找而不是一次查找而变慢?

c++ - 如何使用两个预编译头文件。一种用于托管代码,另一种用于非托管代码。 xxx.pch 不是有效的预编译头文件

c++ - 动态上下文相关运算符的设计模式(例如模运算)?

c++ - 如何在 SDL2 中嵌套视口(viewport)

c++ - 如何将屏幕上的鼠标坐标转换为 3D 坐标

c# - c++和c#之间通过管道进行通信

C++ 高效查找 vector 中第一个最接近的匹配值?

c++ - 什么版本的 VTK 支持 vtkNew 自动转换?