public ArrayList<ArrayList<String>> getDataTale2(String sql) throws SQLException { ArrayList<ArrayList<String>> dt=new ArrayList<ArrayList<String>>(); sta =(SQLServerPreparedStatement)con.prepareStatement(sql); rs=(SQLServerResultSet)sta.executeQuery(); SQLServerPreparedStatement stmt = (SQLServerPreparedStatement)con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY ); ResultSet rset = stmt.executeQuery(); ResultSetMetaData rsmd = rset.getMetaData() ; int columnCount = rsmd.getColumnCount(); ArrayList<String> listNames=new ArrayList<>(); for (int c=0;c<columnCount;c++){ String cName=rsmd.getColumnName(c+1); listNames.add(cName); } dt.add(listNames); while(rs.next()){ ArrayList<String> list=new ArrayList<>(); for (int c=0;c<columnCount;c++){ String cName=rsmd.getColumnName(c+1); list.add(rs.getString(cName)); } dt.add(list); } rset.close(); if (rs != null) { rs.close(); rs = null; } if (sta != null) { sta.close(); sta = null; } if (con != null) { con.close(); con = null; } return dt; }