MySQL按类型月份分组查询后如何将结果正确赋值给JDBC变量
问题原因
你编写的查询语句中,month(Start)、COUNT(Type)属于函数计算生成的动态列,没有显式指定别名,MySQL JDBC驱动无法识别将函数表达式作为默认列名,因此按month(Start)这类名称取值时会抛出找不到列的异常。
解决方法
方法1(推荐):给计算列显式指定别名
修改SQL语句,为所有计算列设置易识别的别名,后续通过别名从ResultSet中取值即可:
SELECT `Type`, month(`Start`) AS start_month, COUNT(Type) AS type_count FROM appointments GROUP BY `Type`, month(`Start`)
对应Java代码取值部分修改为:
String typeKey = rs.getString("Type"); int monthValue = rs.getInt("start_month"); int count = rs.getInt("type_count");
方法2:通过列索引取值
JDBC中ResultSet的列索引从1开始计数,你当前的查询返回列顺序固定,可直接按位置取值,无需修改SQL:
String typeKey = rs.getString(1); int monthValue = rs.getInt(2); int count = rs.getInt(3);
内容的提问来源于stack exchange,提问作者Stone
相关产品推荐
相关产品推荐

