JDBC MetaData (元数据)

来源:互联网 发布:学c语言入门看什么书 编辑:程序博客网 时间:2024/05/19 16:36

►JDBC的元数据接口有:
►DatabaseMetaData数据库级
►ResultSetMetaData结果集级


DatabaseMetaData (数据库元数据)

在对数据源进行连接以后,得到一个Connection 的对象,可以从这个对象获得有关数据源的各种信息,包括关于数据库中的各个表,表中的各个列,数据类型和存储过程等各方面的信息。根据这些信息,JDBC 程序可以访问一个事先并不了解的数据库。获取这些信息的方法都是在DatabaseMetaData的对象上实现的,而DatabaseMetaData对象是在Connection对象之上获得的。

DatebaseMetData   是由Connection对象  getMetaData() 方法得到

►数据库的一些常用信息可通过以下方法获得。

getURL //返回一个String对象,代表数据库的URL。
getUserName() //返回此连接使用的数据库的用户名。
isReadOnly() //返回一个boolean值,指示数据库是否只允许读操作。
getDatabaseProduceName() //返回数据库的产品名称。
getDatabaseProduceVersion() //返回数据库的版本号。
getDriverName() //返回驱动程序的名称。
getDriverVersion() //返回驱动程序的版本号。

@Testpublic void aa() throws Exception{Connection conn=MysqlDbUtils.getConnection();DatabaseMetaData st=conn.getMetaData();System.out.println(st.getURL());System.out.println(st.getUserName());System.out.println(st.getDatabaseProductName());conn.close();}


ResultSetMetaData结果集级
根据结果集的元数据,可以得到一个查询结果集关于查询表中列的个数、各个列名、类型以及各个列的宽度等。
ResultSetMetaData 的对象可以由ResultSet 对象的getMetaData()方法得到。
ResultSetMetaData 对象的常用方法如下
ResultSet rs = stmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
rsmd.getColumnCount() //返回目前ResultSet 对象的列数。
rsmd.getColumnDisplaySize(int column); //返回column指定的列的最大宽度。
rsmd.getColumnLabel(int column) //返回column 指定列的标签。

rsmd.getColumnName(int column) //返回column 指定列的列名

public static List<Map> query(String sql) throws Exception{    Connection conn=getConnection();    PreparedStatement pst= conn.prepareStatement(sql);    ResultSet rs=pst.executeQuery();    // 获取包含有关 ResultSet 对象列信息的 ResultSetMetaData 对象    ResultSetMetaData rsmd=rs.getMetaData();   //获取列的总数    int columnCount=rsmd.getColumnCount();    System.out.println(columnCount);    List list=new ArrayList();    while(rs.next()){        Map map=new HashMap();        for(int i=1;i<=columnCount;i++){            //获取列名            String colName=rsmd.getColumnName(i);            System.out.println(colName);            //获取对应的值            String colValue=rs.getString(i);            System.out.println(colValue);            //以键值对的方式存入map集合中            map.put(colName, colValue);        }        list.add(map);    }    rs.close();    pst.close();    conn.close();    return list;}


原创粉丝点击