java.sql.DatabaseMetaData 
java.sql.ResultSetMetaData

解决方案 »

  1.   

    可否详细一点,我也知道可以利用databasemetadata,具体怎么用不清楚.
      

  2.   

    /**
         *  取得当前连接数据库的表信息。
         *
         * @return                   表信息列表
         * @exception  SQLException  Description of the Exception
         * @throws  Exception        失败时抛出
         */
        public ParameterList getTableList()
                                   throws SQLException
        {
            DatabaseMetaData meta   = this.getMetaData();
            ResultSet        rs     = meta.getTables( null, "%", "%", null );
            ParameterList    result = new ParameterList();        while ( rs.next() )
            {
                String        name  = rs.getString( 3 );
                String        type  = rs.getString( 4 );
                DBTableStruct table = new DBTableStruct();
                table.name = name;
                table.type = type;
                result.append( table );
            }        return result;
        }
        /**
         *  取得当前连接所连接数据库的元数据。
         *
         * @return                当前连接数据库元数据
         * @throws  SQLException  出错
         */
        public DatabaseMetaData getMetaData()
                                     throws SQLException
        {
            return connection.getMetaData();
        }
      

  3.   

    我按照你的思路写了下面的一段程序:
         try
    {
    DatabaseMetaData meta = conn.getMetaData();
            ResultSet rs = meta.getTables( null, "%", "%", null );
    }
    catch(SQLException sqlex)
    {
     System.err.println("Unabled to getMetaData");
     sqlex.printStackTrace();
    }
    编译的时候无错误,但是执行的时候就抛出异常:
    Unabled to getMetaData
    java.sql.SQLException: [Microsoft][ODBC Microsoft Access  驱动程序]可选的功能未实现
            at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
            at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
            at sun.jdbc.odbc.JdbcOdbc.SQLTables(JdbcOdbc.java:5472)
            at sun.jdbc.odbc.JdbcOdbcDatabaseMetaData.getTables(JdbcOdbcDatabaseMeta
    Data.java:2395)
            at myData.<init>(myData.java:33)
            at myData.main(myData.java:75)
        
    后来我就改称下面的形式:
         try
    {
    DatabaseMetaData meta = conn.getMetaData();
    }
    catch(SQLException sqlex)
    {
     System.err.println("Unabled to getMetaData");
     sqlex.printStackTrace();
    }
        
         try
    {
     ResultSet rs = meta.getTables( null, "%", "%", null );
    }
    catch(SQLException sqlex)
    {
      System.err.println("Unabled to getTableList");
      sqlex.printStackTrace();
    }
    现在连编译也不行了:
    D:\java\myData.java:42: cannot resolve symbol
    symbol  : variable meta 
    location: class myData
         ResultSet rs = meta.getTables( null, "%", "%", null );
                                   ^
    1 errorProcess completed.
    估计就是这句程序的问题,请指教!
      

  4.   

    如果你是通过JDBC-ODBC驱动连接Access的,估计它不支持取数据库元数据;请使用专用的Access JDBC驱动(Type 3 或Type 4)