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()方法轉換成字符串類型就解決了
做一個隨筆記錄,紀念自己的坑。