dbutils使用带参数的子查询出错?? 400 报错
sql语句为:select r.fSumResult,r.fProblemCode from OA_Problem_Record r where r.fProblemCode =
(select p.localProblemCode from OA_Temp_Problem p where p.remoteProblemId=?);
然后设参数,就报错了。。。
报这个错:java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: 无法绑定由多个部分组成的标识符 "p.remoteProblemId"。
奇怪的是我把?改为具体参数值时,是可以执行的。。。。
那应该是代码写错了
######如果不带子查询的话,也是正常的,
######就是要看你是怎么传参数的,说不定你传了个错误类型的参数
######就是传了个string的进去。。
###### RowProcessor rowprocessor = new BasicRowProcessor();
QueryRunner run = new QueryRunner();
//MapHandler将一条记录转换为Map对象
ResultSetHandler rshandler = new MapHandler(rowprocessor);
conn = getConnection();
map = (Map) run.query(conn, query, params, rshandler);
你这方法弄错了吧?
至少参数顺序写错了,params 在后,rshandler 在前
######QueryRunner 的方法 query(Connection, String, Object[], ResultSetHandler)
######我怀疑你在穿params参数的时候有问题,没代码,不知道有什么问题,自己检查下吧
######我详细描述下问题:
使用DBUtil查询数据库时 Java报 列名 'lei_xing' 无效。但是这个SQL语句在MS SQL的控制台下面能够争取执行。到底是什么原因啊?
这是查询部分的代码:
String sql = "select tg.fid,tg.intime,tg.lei_bie,tg.ftitle,tg.inpart,tg.inname,jl.id from tonggao tg left join (select id,fid from yue_du_ji_lu y where lei_xing = ?) jl on tg.fid = jl.fid ";
Connection conn = new DBConnection().getConn();
QueryRunner qr = new QueryRunner();
List list = qr.query(conn, sql,new ArrayListHandler(), new Object[] {"cd"});
return list;
ps:去掉子查询中的where条件就能通过。
Java报 列名 'lei_xing' 无效
都这样说了还要怎么样啊。。。
没有where不就没有使用到 'lei_xing' 列。 所以正确.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。