通过简单使用 new 操作符就地创建一个 ResultSet 对象,我们很容易将任何 ResultSet 对象封装在此类中: ResultSet results = .. //按通常的方法获得ResultsSet//利用它创建一个更有用的对象resultSet rs = new resultSet(results);
并很容易在任何 JDBC 程序中使用这个对象。
构建一个 Database 对象
我们沿 00 链向上移的另一部分努力是创建一个 Database 对象,它将封装下列对象的行为:Connection、Statement 和 DatabaseMetaData 对象, 以及我们刚刚构建的 SQL 查询和 resultSet。我们的 Database 对象允许我们创建连接、获取表名、在数据库中移动以及更简单地获得行和列的值。请注意,Execute 方法返回一个 resultSet 对象,您可以直接对它进行操作。 class Database{//这是一个将 JDBC 数据库的所有功能封装在单个对象中的类Connection con;resultSet results;ResultSetMetaData rsmd;DatabaseMetaData dma;String catalog;String types[]; public Database(String driver) { types = new String[1]; types[0] = "TABLES"; //初始化类型 try{Class.forName(driver);} //加载 JDBC-ODBC 桥驱动程序 catch (Exception e) {System.out.println(e.getMessage());} } //-- public void Open(String url, String cat) { catalog = cat; try {con = DriverManager.getConnection(url); dma =con.getMetaData(); //获取元数据 } catch (Exception e) {System.out.println(e.getMessage());} } //-- public String[] getTableNames() { String[] tbnames = null; Vector tname = new Vector(); //将表名添加到一个 Vector 中, //因为我们不知道有多少个表 try { results = new resultSet(dma.getTables(catalog, null, "%", types)); while (results.hasMoreElements()) tname.addElement(results.getColumnValue("TABLE_NAME")); } catch (Exception e) {System.out.println(e);} //将表名复制到一个 String 数组中 tbnames = new String[tname.size()]; for (int i=0; i< tname.size(); i++) tbnames[i] = (String)tname.elementAt(i); return tbnames; } //-- public String[] getTableMetaData() { // 返回表类型的信息 results = null; try{ results = new resultSet(dma.getTables(catalog, null, "%", types)); } catch (Exception e) {System.out.println(e.getMessage());} return results.getMetaData(); } //-- public String[] getColumnMetaData(String tablename) { //共6页 1 2 3 4 5 6