新手填坑 java.lang.Integer cannot be cast to java.lang.String
本文转载自:http://www.cnblogs.com/zhengwanmeixiansen/archive/2017/08/17/7380666.html 作者:zhengwanmeixiansen 转载请注明该声明。
java连接mysql封装的获取集合的公用方法
public List<Map<String, String>> getSet(String sql){ List<Map<String, String>> list = new ArrayList<Map<String,String>>(); ResultSet rs = null; Statement sm = null; try { //1.加载驱动程序 Class.forName(driver); con = DriverManager.getConnection(url, user, passwod); //2.创建statement类对象,用来执行SQL语句!! sm = con.createStatement(); rs = sm.executeQuery(sql); //返回列的描述信息 ResultSetMetaData rsmd = rs.getMetaData(); while(rs.next()){ Map map = new HashMap(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { map.put(rsmd.getColumnName(i), rs.getObject(i)); } list.add(map); } } catch (Exception e) { e.printStackTrace(); }finally { closeAll(rs,sm,con); } return list; }
因为id这个字段在数据库中是int类型的,返回Map接收查询结果,接收时使用了List<Map<String,String>>,然后在取出id的时候就出现了转换异常
最终修改了封装方法里取id的地方的代码才解决,用toString()方法转换成字符串类型就解决了
做一个随笔记录,纪念自己的坑。