服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

表的信息的获得---resultsetmetadata


  在这个演示程序中用到数据库是access的,数据库中的表的名字是studentinfo表,包含字段有
  
  idno 文本型 长为8
  
  name 文本型 长为8
  
  sex 文本型 长为6
  
  age 数值型 长为8
  
  birthdt 文本型 长为8
  
  程序中主要是操作这个表,选择的驱动是odbc。程序如下:
  
  import java.sql.*;
  
  public class dbaccess {
  
   public static java.sql.connection conn = null;
  
   private string sqlstr = "";
  
   public dbaccess()
  
   {
  
    //new sun.jdbc.odbc.jdbcodbcdriver();
  
    try {
  
     class.forname("sun.jdbc.odbc.jdbcodbcdriver");
  
     conn = drivermanager.getconnection("jdbc:odbc:testdb","admin","");
  
    }
  
    catch (classnotfoundexception ex) {
  
     system.out.println(ex.tostring());
  
    }
  
    catch(sqlexception sqlex){
  
     system.out.println(sqlex.tostring());
  
    }
  
   }
  
  public resultset search() {
  
    resultset rset = null;
  
    sqlstr = "select * from studentinfo";
  
    statement smt = null;
  
    try {
  
     smt = conn.createstatement();
  
     rset = smt.executequery(sqlstr);
  
    }
  
    catch (sqlexception ex) {
  
     system.out.println("exception:"+ex.tostring());
  
    }
  
    return rset;
  
  
  
   }
  
   public void getresultsetmetadata()
  
   {
  
    resultset rs = null;
  
   try {
  
    string[] tp = {"table"};
  
    rs = this.search();
  
    resultsetmetadata rsmd = rs.getmetadata();  
  
  /*
  
  获得resultsetmeatadata对象。所有方法的参数都是列的索引号,即第几列,从1开始
  
  */
  
    system.out.println("下面这些方法是resultsetmetadata中方法");
  
    system.out.println("获得1列所在的catalog名字 : " + rsmd.getcatalogname(1));
  
    system.out.println("获得1列对应数据类型的类 " + rsmd.getcolumnclassname(1));
  
    system.out.println("获得该resultset所有列的数目 " + rsmd.getcolumncount());
  
    system.out.println("1列在数据库中类型的最大字符个数" + rsmd.getcolumndisplaysize(1));
  
    system.out.println(" 1列的默认的列的标题" + rsmd.getcolumnlabel(1));
  
    system.out.println(“1列的模式” + rsmd.getschemaname(1));
  
    system.out.println("1列的类型,返回sqltype中的编号 " + rsmd.getcolumntype(1));
  
    system.out.println("1列在数据库中的类型,返回类型全名" + rsmd.getcolumntypename(1));
  
    system.out.println("1列类型的精确度(类型的长度): " + rsmd.getprecision(1));
  
    system.out.println("1列小数点后的位数 " + rsmd.getscale(1));
  
    system.out.println("1列对应的模式的名称(应该用于oracle) " + rsmd.getschemaname(1));
  
    system.out.println("1列对应的表名 " + rsmd.gettablename(1));
  
    system.out.println(“1列是否自动递增” + rsmd.isautoincrement(1));
  
    system.out.println(“1列在数据库中是否为货币型” + rsmd.iscurrency(1));
  
    system.out.println(“1列是否为空” + rsmd.isnullable(1));
  
    system.out.println(“1列是否为只读” + rsmd.isreadonly(1));
  
    system.out.println(“1列能否出现在where中” + rsmd.issearchable(1)); 
  
   }
  
   catch (sqlexception ex) {
  
    ex.printstacktrace();
  
   }
  
   }
  
   public static void main(string args[])
  
   {
  
    dbaccess dbaccess = new dbaccess();
  
    dbaccess.getresultsetmetadata();
  
   }
  
  }
  通过上面例子中的方法能够获得,resultset中的表的信息,有两个方法的用法我也不甚清楚,所以没写,弄明白了再作补充。

扫描关注微信公众号