22---数库编程13(元数据)

 

1、DataBaseMetaData:
 使用元数据可以分心数据库的基本信息,包括版本,数据库的名称等等,或者得到指定表的主键;
  /*---创建数据库表
   drop table user;
   create table user(
    id   int   auto_increment primary key,
    name  varchar(30) not null,
    password varchar(32) not null,
    age   int   not null,
    sex   varchar(2) default '男',
    birthday Date
   );
   */

   import java.sql.DriverManager;
   import java.sql.Connection;
   import java.sql.SQLException;
   import java.sql.DatabaseMetaData;
   import java.sql.ResultSet;

   public class Demo{
    //定义数据库的驱动程序
    public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
    //定义数据库的连接地址:
    public static final String DBURL="jdbc:mysql://localhost:3306/lid";
    //定义数据库的用户名
    public static final String DBUSER="root";
    //定义数据库的密码
    public static final String DBPASSWORD="123";
    public static void main(String args[]) throws Exception{
     Connection conn=null;
     DatabaseMetaData dmd=null;//数据库元数据
     ResultSet rs=null;
     Class.forName(DBDRIVER);
     conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
     dmd=conn.getMetaData();
     System.out.println("数据库的名称:"+dmd.getDatabaseProductName());
     System.out.println("数据库版本:"+dmd.getDatabaseMajorVersion()+
       "."+dmd.getDatabaseMinorVersion());
     //取得数据表的主键,因为主键有多个所以用ResultSet结果集接受
     rs=dmd.getPrimaryKeys(null,null,"user");
     while(rs.next()){
      System.out.println("表类别:"+rs.getString(1));
      System.out.println("表模式:"+rs.getString(2));
      System.out.println("表名称:"+rs.getString(3));
      System.out.println("列名称:"+rs.getString(4));
      System.out.println("主键序列号:"+rs.getString(5));
      System.out.println("主键名称:"+rs.getString(6));
      }
     
     conn.close();
     }
    }

2、ResultSetMetaData
 使用ResultSetMetaData可以获取关于ResultSet对象中列的类型和属性的信息的对象,ResultSetMetaData
 存储了ResultSet的MetaData,可以通过以下方法获得ResultSet的信息;
   /*---创建数据库表
    drop table user;
    create table user(
     id   int   auto_increment primary key,
     name  varchar(30) not null,
     password varchar(32) not null,
     age   int   not null,
     sex   varchar(2) default '男',
     birthday Date
    );
    */

    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.ResultSetMetaData;
    import java.sql.PreparedStatement;

    public class Demo{
     //定义数据库的驱动程序
     public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
     //定义数据库的连接地址:
     public static final String DBURL="jdbc:mysql://localhost:3306/lid";
     //定义数据库的用户名
     public static final String DBUSER="root";
     //定义数据库的密码
     public static final String DBPASSWORD="123";
     public static void main(String args[]) throws Exception{
      Connection conn=null;
      ResultSetMetaData rsmd=null;//数据库元数据
      PreparedStatement psmt;
      Class.forName(DBDRIVER);
      conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
      String sql="select id,name,password,age,sex,birthday from user";
      psmt=conn.prepareStatement(sql);
      rsmd=psmt.getMetaData();
      System.out.println("一共"+rsmd.getColumnCount()+"列");
      if(rsmd.isAutoIncrement(1)){
       System.out.println(rsmd.getColumnName(1));//列是自动增长的
       }
      conn.close();
      }
     }
  以上在用框架是用的比较多;   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bzuld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值