在我的项目中,我正在使用Orientdb,在更新查询中存在一些问题。
int amt = 100;
int recordsUpdated = db.command(new OCommandSQL("update A set id = eval('id - "+ amt +"') where eval('id - "+amt+"') > 0")).execute();
这很好用。但是,
int recordsUpdated = db.command(new OCommandSQL("update A set id = eval('id - ?') where eval('id - ?') > 0")).execute(100,100);
或
Map<String,Object> params = new HashMap<String,Object>();
params.put("amt", "100");
int recordsUpdated = db.command(new OCommandSQL("update A set id = eval('id - :amt') where eval('id - :amt') > 0")).execute(params);
无效。 请帮我做工作。
答案 0 :(得分:2)
变量的替换在SQL中无处不在,特别是在字符串内部。您可以像第一个示例中那样连接值,或者尝试使用上下文变量,例如:
OCommandSQL cmd = new OCommandSQL("update A set id = eval('id - $id') where eval('id - $id') > 0");
cmd.getContext().setVariable( "id", 100 );
int recordsUpdated = db.command(cmd).execute();