zoukankan      html  css  js  c++  java
  • [JDBC]查询结果集把字段名和字段值一起竖向输出

    代码:

    package com.hy.fieldandvalue;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    import org.apache.log4j.Logger;
    
    import com.hy.DBParam;
    
    class DbParam{
        public final static String Driver = "oracle.jdbc.driver.OracleDriver";
        public final static String DbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
        public final static String User = "ufo";
        public final static String Pswd = "1234";
    }
    
    class KeyValue implements Comparable<KeyValue>{
        String key;
        Object value;
        
        @Override
        public int compareTo(KeyValue another) {
            return this.key.compareTo(another.key);
        }
    }
    public class Fetcher {
        private static Logger log = Logger.getLogger(Fetcher.class);
        
        public static void main(String[] args) {
            Connection conn = null;
            Statement stmt = null;
            
            try{
                Class.forName(DBParam.Driver).newInstance();
                conn = DriverManager.getConnection(DBParam.DbUrl, DBParam.User, DBParam.Pswd);
                stmt = conn.createStatement();
                
                //String sql = "select * from allocation_request where shipper_code='10005' and order_no='1911271000500004' and to_char(delivery_date,'yyyy-MM-dd')='2019-11-28'";
                String sql="select * from testtb17 where id=114 ";
                
                ResultSet rs = stmt.executeQuery(sql);
                ResultSetMetaData rsMetadata = rs.getMetaData();
                int count = rsMetadata.getColumnCount();
                
                
                int index = 0;
                while (rs.next()) {
                    index++;
                    List<KeyValue> kvList=new ArrayList<KeyValue>();
                    
                    for (int i=0; i<count; i++) {
                        int idx=i+1;
                        
                        KeyValue kv=new KeyValue();
                        kv.key = rsMetadata.getColumnLabel(idx);// 列名
                        kv.value=rs.getString(kv.key);
                        kvList.add(kv);
                    }
                    
                    Collections.sort(kvList);
                    
                    System.out.println();
                    StringBuilder sb=new StringBuilder();
                    int idx=0;
                    for(KeyValue kv:kvList) {
                        idx++;
                        sb.append(fixSizeStr("#"+idx,4)+fixSizeStr(kv.key,30)+kv.value+"
    ");
                    }
                    
                    System.out.println(sb.toString());
                }
            } catch (Exception e) {
                System.out.print(e.getMessage());
                e.printStackTrace();
            } finally {
                try {
                    stmt.close();
                    conn.close();
                } catch (SQLException e) {
                    log.error("Can't close stmt/conn because of " + e.getMessage());
                }
            }
        }
        
        /**
         * get a fix-length string,if less add space
         * @param str
         * @param size
         * @return
         */
        private static String fixSizeStr(String str, int size) {
            return String.format("%-"+size+"s", str);
        }
    }

    输出:

    #1  AGE                           0
    #2  CREATEDTIME                   2019-06-16 10:21:46
    #3  ID                            114
    #4  NAME                          0

    --END-- 2019年12月4日20:26:01

  • 相关阅读:
    解决方案下显示的网站名称被追加编号的问题解决方法
    sql server 2008 报表服务器(sql server 2008 report service)中如何固定行或者列
    如何通过参数来切换图表和数据
    饼图中如何将一定比例的小切片收集在一起
    饼图图例中显示百分比值
    如何根据条件隐藏列
    饼图上如何显示百分比值
    负载均衡
    在UTF8页中接收和使用以GB2312方式进行URL编码的中文数据
    ASP 格式化显示时间为几个月,几天前,几小时前,几分钟前,或几秒前
  • 原文地址:https://www.cnblogs.com/heyang78/p/11982586.html
Copyright © 2011-2022 走看看