5分钟学会java获取数据库列名、别名、类型等信息

                                                获取数据库列名、别名、类型等信息

一、前言

       本次总结为:获取数据库表列名,别名,类型,列数,表名等相关信息。

           总结如下:

二、代码

/**
 * 描述:获取数据库相关信息
 * @author 猿医生
 * @date 2018年10月31日
 *
 */
public class ConnInfo { 
    public static void main(String[] args){ 
      String sql = " select * from ord_base "; 
        // 用于调用存储过程:CallableStatement cs = null;
        PreparedStatement cs = null;
        ResultSetMetaData data = null;
        ResultSet rs = null;
      try { 
           // 用于调用存储过程:cs = JDBCUtils.getConnection("url","username","password").prepareCall(sql);
           // 用于调用存储过程:cs.execute();
        cs = JDBCUtils.getConnection("url","username","password").prepareStatement(sql); 
        rs = cs.executeQuery(sql); 
        data = rs.getMetaData(); 
        while(rs.next()){ 
          for(int i = 1 ; i <= data.getColumnCount() ; i++){ 
            //获得所有列的数目及实际列数 
            int columnCount = data.getColumnCount(); 
            //获得指定列的列名 
            String columnName = data.getColumnName(i); 
            //获得指定列的列值 
            String columnValue = rs.getString(i); 
            //获得指定列的数据类型 
            int columnType = data.getColumnType(i); 
            //获得指定列的数据类型名 
            String columnTypeName = data.getColumnTypeName(i); 
            //所在的Catalog名字 
            String catalogName = data.getCatalogName(i); 
            //对应数据类型的类 
            String columnClassName = data.getColumnClassName(i); 
            //在数据库中类型的最大字符个数 
            int columnDisplaySize = data.getColumnDisplaySize(i); 
            //默认的列的标题 
            String columnLabel = data.getColumnLabel(i); 
            //获得列的模式 
            String schemaName = data.getSchemaName(i); 
            //某列类型的精确度(类型的长度) 
            int precision = data.getPrecision(i); 
            //小数点后的位数 
            int scale = data.getScale(i); 
            //获取某列对应的表名 
            String tableName = data.getTableName(i); 
            // 是否自动递增 
            boolean isAutoInctement = data.isAutoIncrement(i); 
            //在数据库中是否为货币型 
            boolean isCurrency = data.isCurrency(i); 
            //是否为空 
            int isNullable = data.isNullable(i); 
            //是否为只读 
            boolean isReadOnly = data.isReadOnly(i); 
            //能否出现在where中 
            boolean isSearchable = data.isSearchable(i); 
            System.out.println(columnCount); 
            System.out.println("获得列"+i+"的字段名称:"+columnName); 
            System.out.println("获得列"+i+"的字段值:"+columnValue); 
            System.out.println("获得列"+i+"的类型,返回SqlType中的编号:"+columnType); 
            System.out.println("获得列"+i+"的数据类型名:"+columnTypeName); 
            System.out.println("获得列"+i+"所在的Catalog名字:"+catalogName); 
              System.out.println("获得列"+i+"对应数据类型的类:"+columnClassName); 
              System.out.println("获得列"+i+"在数据库中类型的最大字符个数:"+columnDisplaySize); 
              System.out.println("获得列"+i+"的默认的列的标题:"+columnLabel); 
              System.out.println("获得列"+i+"的模式:"+schemaName); 
              System.out.println("获得列"+i+"类型的精确度(类型的长度):"+precision); 
              System.out.println("获得列"+i+"小数点后的位数:"+scale); 
              System.out.println("获得列"+i+"对应的表名:" + tableName); 
              System.out.println("获得列"+i+"是否自动递增:"+isAutoInctement); 
              System.out.println("获得列"+i+"在数据库中是否为货币型:"+isCurrency); 
              System.out.println("获得列"+i+"是否为空:"+isNullable); 
              System.out.println("获得列"+i+"是否为只读:"+isReadOnly); 
              System.out.println("获得列"+i+"能否出现在where中:"+isSearchable);  <br>          } 
         } 
        } catch (SQLException e) { 
          System.out.println("数据库连接失败"); 
        } 
      } 
    } 
package com.chongdong.common.util;
 
import java.sql.*;
 
/**
 * 描述:JDBC工具类
 * 提供getConnection方法
 * 提供close方法
 * 开发步骤:
 *         1.私有化构造函数,防止外界直接new对象
 *         2.提供getConnection,用来对外界提供获取数据连接
 *         3.提供close方法,用来关闭资源
 *
 * @author 猿医生
 * @date 2018年10月31日
 *
 */
public class JDBCUtils {
 
    /** 数据库驱动 */
    private final static String JDBC_DRIVER = "com.mysql.jdbc.Driver";
 
 
    /**
     * 私有化构造函数,防止外界直接new对象
     */
    private JDBCUtils(){}
 
    /**
     * 获得Connection
     * @param url:数据库连接地址
     * @param username:用户名
     * @param password:密码
     * @return
     */
    public static Connection getConnection(String url, String username, String password){
        /** 数据库连接 */
        Connection conn = null;
        try{
            /** 加载数据库驱动,注册到驱动管理器 */
            Class.forName(JDBC_DRIVER);
            /** 创建Connection连接,数据库连接参数:地址/用户名/密码 */
            conn = DriverManager.getConnection(url, username, password);
        } catch (ClassNotFoundException e){
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        /** 返回连接 */
        return conn;
    }
 
    /**
     * 关闭资源
     * @param conn
     * @param st
     * @param rs
     */
    public static void close(Connection conn, Statement st, ResultSet rs){
        if(conn != null){
            try {
                /** 关闭资源 */
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                /** 保证资源一定会被释放 */
                conn=null;
            }
        }
 
        if(st != null){
            try {
                /** 关闭资源 */
                st.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                /** 保证资源一定会被释放 */
                st = null;
            }
        }
 
        if(rs != null){
            try {
                /** 关闭资源 */
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                /** 保证资源一定会被释放 */
                rs = null;
            }
        }
    }
}

                       

                             Now ~ ~ ~写到这里,就写完了,如果有幸帮助到你,请记得关注我,共同一起见证我们的成长

小结

谢谢观赏,我叫猿医生。

猿友推荐:正在奔跑的程序猿

猜你喜欢

转载自blog.csdn.net/qq_42175986/article/details/83586720