欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-05 18:17:42
...

问题叙述:

使用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

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


解决思路:

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

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

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

验证结论:

修改位置重新执行,编译通过。