未明确定义列错误
原因:在查询语句中同一列被查询了两次,在通过结果集得值的时候,不知道得哪一个结果,导致该错误
情况一:例如:select tb_name,tb_id,tb_name from tableName where tb_id = 2
while(rs.next){
String s = rs.getString(tb_name);
}
这样写的时候就会出现该错误,因为tb_name在结果中有两项,不知道选择哪一个作为值,出现该错误
解决办法:去掉一个tb_name即可
情况二:当多表连接的时候,可能出现列明相同的情况。(最好的办法是通过添加别名)
例如:select * from tableA a,tableB b where a.a_id = b.a_id
关系是通过tableA的a_id建立起来的。恰好tableB中表示tableA 的a_id的列明也叫a_id,这时候a_id就会出现两次,一次是通过tableA查询所得到的,二次是通过tableB得到的。所以在通过结果集得a_id(rs.getInt("a_id"))的时候就会出错 ,因为不确定是得那一列a_id。
解决办法:
1:指定查询列。这样可以指明a_id只查询一次。后面得值也就不会出现列明相同无法区别的错误了。例如:select a.a_id.a.a_name ,b.b_id ,b.b_name from tableA a,tableB b where a.a_id = b.a_id
2 :创建别名:两个字段相同了。可以取别名来区分相同字段名。例如:select a.a_name aname,b.a_name bname from tableA a,tableB b ;
如果相同字段名都需要查询出来,只能通过表引用或者添加别名来解决此问题