コード例 #1
0
  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();
    }
  }