湖南省建设厅网站制作网页填数据
在使用Hibernate时,我们都用到了反向工程技术,即可根据一个已经存在的表,自动的生成Class类及映射文件,那么java是怎么知道数据库的表的结构的呢? 这就是DataBase MetaData所起的作用.
第一个概念“元数据”: 即数据的数据.
我们来看一个案例:
1. 新建一个数据库:
create database metadatatest;
 
 use metadatatest;
 
 
 create table student(
     id int primary key auto_increment,
     name varchar(50) not null
 )
 
 select * from student;
2. 创建一个java程序来读取这个表的信息:
       public static void main(String[] args)throws Exception {
        Connection con=null;
        DatabaseMetaData m=null;
         Class.forName("com.mysql.jdbc.Driver");
         con=DriverManager.getConnection("jdbc:mysql://localhost:3306/metadatatest","root","a");
         
         //获取数据库元信息
         m=con.getMetaData();
         //取得数据库信息
         ResultSet rs=m.getTables(null, null,null, new String[]{"TABLE"});
         //循环输出数据库信息
         while(rs.next()){
             System.out.println("数据库名:"+rs.getString("TABLE_CAT"));
             System.out.println("模式:"+rs.getString("TABLE_SCHEM"));            
             System.out.println("表的名字:"+rs.getString("TABLE_NAME"));
             System.out.println("类型:"+rs.getString("TABLE_TYPE"));
             System.out.println("注释:"+rs.getString("REMARKS"));
         }
         System.out.println("************************************");
         //取出student表中的字段信息
         rs=m.getColumns(null, null, "student", null);
         while(rs.next()){
             System.out.print("列名:"+rs.getString("COLUMN_NAME")+"/t");
             System.out.print("列数据类型:"+rs.getString("DATA_TYPE")+"/t");
             System.out.print("列数据长度:"+rs.getString("COLUMN_SIZE")+"/t");
             System.out.print("列默认值:"+rs.getString("COLUMN_DEF")+"/t");
             System.out.println();
         }        
         rs.close();
         con.close();       
     }
