private void init(ResultSet rs, int resultNo) { if (rs == null) return; try { ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount(); for (int i = 1; i <= count; i++) { String name = rsmd.getColumnName(i); if (name != null) name = name.toLowerCase(); String typeName = rsmd.getColumnClassName(i); String caption = rsmd.getColumnLabel(i); RecordMetaData rmd = new RecordMetaData(name, typeName, caption, i); metadata.put(name, rmd); fieldNames.add(name); } fieldCount = count; while (rs.next()) { ArrayList record = new ArrayList(); for (int i = 1; i <= count; i++) { String name = (String) fieldNames.get(i - 1); RecordMetaData rmd = (RecordMetaData) metadata.get(name); // System.out.println(rmd.getType()); switch (rmd.getType()) { case MetaDataTypes.BIGDECIMAL_TP: case MetaDataTypes.BIGINTEGER_TP: record.add(rs.getBigDecimal(i)); break; case MetaDataTypes.BOOLEAN_TP: record.add(new Boolean(rs.getBoolean(i))); break; case MetaDataTypes.BYTE_TP: record.add(new Byte(rs.getByte(i))); break; case MetaDataTypes.CALENDAR_TP: java.sql.Date d = rs.getDate(i); // Calendar calendar = GregorianCalendar.getInstance(); // System.out.println("aaaaaaaa"+d); // calendar.set(d.getYear()+1900,d.getMonth(),d.getDay()); record.add(d); break; case MetaDataTypes.CHARACTER_TP: break; case MetaDataTypes.DOUBLE_TP: record.add(new Double(rs.getDouble(i))); break; case MetaDataTypes.FLOAT_TP: record.add(new Float(rs.getFloat(i))); break; case MetaDataTypes.INTEGER_TP: record.add(new Integer(rs.getInt(i))); break; case MetaDataTypes.LONG_TP: record.add(new Long(rs.getLong(i))); break; case MetaDataTypes.SHORT_TP: record.add(new Short(rs.getShort(i))); break; case MetaDataTypes.STRING_TP: record.add(DBUtil.fromDB(rs.getString(i))); break; default: InputStream is = rs.getBinaryStream(i); record.add(is); } // switch } // for records.add(new Record(record)); recordCount++; if (recordCount == resultNo) { break; } } // while } catch (SQLException sqle) { sqle.printStackTrace(); } }