在下面的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”);
它的工作..
但问题是,字段名称会根据用户选择而改变。我怎么能克服这个问题。还有其他办法吗?
答案 0 :(得分:2)
您无法使用statement->setString()
方法设置字段的名称;只有变量的值可以这样绑定。
我知道只有两个解决方案来实现这一点(两者都不是特别好):
动态创建语句字符串
string statement ="UPDATE emp SET " + fieldname + "=:1 where search=: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";