您的位置:首页 > 数据库

【软件系肖潇】解决使用DButils进行jdbc多表联合操作时抛出sql异常的问题

2017-12-12 20:02 393 查看
问题叙述:

使用DButils进行多表联合时抛出java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: 无法绑定由多个部分组成的标识符

代码如下:

public KindVO scanKindName(int productId) {

String kindNameSQL = "SELECT [kind_name]"
+ " FROM [t_product] , [t_kind]"
+ " WHERE t_kind.[kind_id] = t_product.[kind_id]"
+ " AND t_product.[product_id] = ?";
KindVO kinvo = null;
try {
kinvo = qr.query(kindNameSQL, new BeanHandler<KindVO>(KindVO.class),productId);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return kinvo;
}

将sql语句在数据库执行则正常显示,代码如下:

SELECT [kind_name] FROM [t_product] , [t_kind]
WHERE t_kind.[kind_id] = t_product.[kind_id] AND t_product.[product_id] = 4


解决思路:

在sql 语句正确无误的前提下,执行方法抛出异常。所以考虑到sql正确,但是否符合dbutils的书写规范?

将数据库中语句粘贴至方法中进行对比,发现除属性位置之外没有任何不同。

得出初步结论,在使用DButils进行多表操作时,where后属性名的位置顺序要和from后表格的位置保持一致。

验证结论:

修改位置重新执行,编译通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐