栏目:JAVA 基础(<--点此查看更多)Java 数据类型|类|对象|封装|继承|多态等特性
  • JDBC 查询结果字段动态封装

  • Tue Oct 21 23:39:03 CST 2014 编程者 我要收藏(...) 评论 ...
  • ResultSetMetaData 您使用 getMetaData() 方法从 ResultSet 中获取 ResultSetMetaData 对象。您可以使用此对象获得列的数目和类型以及每一列的名称。
  •     ResultSetMetaData 您使用 getMetaData() 方法从 ResultSet 中获取 ResultSetMetaData 对象。您可以使用此对象获得列的数目和类型以及每一列的名称。
        getColumnCount(); 返回 ResultSet 中的列数。 
        getColumnName(int); 返回列序号为 int 的列名。 
        getColumnLabel(int); 返回此列暗含的标签。 
        isCurrency(int); 如果此列包含带有货币单位的一个数字,则返回 true。 
        isReadOnly(int); 如果此列为只读,则返回 true。 
        isAutoIncrement(int); 如果此列自动递增,则返回 true。这类列通常为键,而且始终是只读的。 
        getColumnType(int); 返回此列的 SQL 数据类型。 

    /**
    * 功能说明:查询所有消息
    * @return
    * @author: guodongle@dfsoft.com.cn
    * @throws SQLException
    * @throws ClassNotFoundException
    * @DATE:2014-10-16 @TIME: 下午4:00:01
    */
    public JSONArray getAllMessage() throws ClassNotFoundException,
    SQLException {
    List> result = new ArrayList>();
    try {
    String sql = "select msg_title, msg_text, msg_type, msg_receivedtime, " +
    "msg_isread from fam_msg order by msg_id desc";
    PreparedStatement stmt = this.getSqlStatement(sql);
    ResultSet rs = stmt.executeQuery();
    while (rs.next()) {
    /*
    * 封装数据库字段及对应的值到 Map 中
    */
    Map map = new HashMap();
    ResultSetMetaData metaData = rs.getMetaData();
    int columnCount = metaData.getColumnCount();
    for (int i = 1; i <= columnCount; i++) {
    String key = metaData.getColumnName(i);
    int columnType = metaData.getColumnType(i);
    switch (columnType) {
    case Types.VARCHAR:
    map.put(key, rs.getString(key));
    break;
    default:
    map.put(key, rs.getObject(key));
    break;
    }
    }
    result.add(map);
    }
    } finally {
    this.dispose();
    }
    return (new JSONArray(result));
    }

    getColumnType(int) 返回的数据类型包括:
    BIGINT 
    BINARY 
    BIT 
    CHAR 
    DATE 
    DECIMAL 
    DOUBLE 
    FLOAT 
    INTEGER 
    LONGVARBINARY 
    LONGVARCHAR 
    NULL 
    NUMERIC 
    OTHER 
    REAL 
    SMALLINT 
    TIME 
    TIMESTAMP 
    TINYINT 
    VARBINARY 
    VARCHAR
  • 信息来源:http://www.bianchengzhe.com (举报这篇文章)
  • 好评(...) 中评(...) 差评(...)