在mysql语句中,ResultSet是结果集,可ResultSetMetaData又是什么东西?

解决方案 »

  1.   

    表的信息的获得---ResultSetMetaData
     
     
        在这个演示程序中用到数据库是Access的,数据库中的表的名字是STUDENTINFO表,包含字段有
      
      IDNO文本型长为8
      
      NAME文本型长为8
      
      SEX文本型长为6
      
      AGE数值型长为8
      
      BIRTHDT文本型长为8
      
      程序中主要是操作这个表,选择的驱动是ODBC。程序如下:
      
      importjava.sql.*;
      
      publicclassDBAccess{
      
       publicstaticjava.sql.Connectionconn=null;
      
       privateStringsqlStr="";
      
      publicDBAccess()
      
       {
      
        //newsun.jdbc.odbc.JdbcOdbcDriver();
      
        try{
      
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      
         conn=DriverManager.getConnection("jdbc:odbc:TestDB","admin","");
      
        }
      
        catch(ClassNotFoundExceptionex){
      
         System.out.println(ex.toString());
      
        }
      
        catch(SQLExceptionsqlEx){
      
         System.out.println(sqlEx.toString());
      
        }
      
       }
      
      publicResultSetSearch() {
      
        ResultSetrset=null;
      
        sqlStr="SELECT*FROMSTUDENTINFO";
      
       Statementsmt=null;
      
       try{
      
        smt=conn.createStatement();
      
        rset=smt.executeQuery(sqlStr);
      
       }
      
       catch(SQLExceptionex){
      
        System.out.println("Exception:" ex.toString());
      
       }
      
       returnrset;
      
      
      
       }
      
       publicvoidgetResultSetMetaData()
      
      {
      
       ResultSetrs=null;
      
       try{
      
        String[]tp={"TABLE"};
      
        rs=this.Search();
      
        ResultSetMetaDatarsmd=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));