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

问题叙述:

使用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.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后表格的位置保持一致。

验证结论:

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

你可能感兴趣的:(学习与记录,jdbc,sql,dbutils,java,异常)