catalog |
要在其中查找表名的目录名。对于 JDBC-ODBC 数据库以及许多其他数据库而言,可将其设置为 null。这些数据库的目录项实际上是它在文件系统中的绝对路径名称。 |
schema |
要包括的数据库“方案”。许多数据库不支持方案,而对另一些数据库而言,它代表数据库所有者的用户名。一般将它设置为 null。 |
tablemask |
一个掩码,用来描述您要检索的表的名称。如果您希望检索所有表名,则将其设为通配符 %。请注意,SQL 中的通配符是 % 符号,而不是一般 PC 用户的 * 符号。 |
types[] |
这是描述您要检索的表的类型的 String 数组。数据库中通常包括许多用于内部处理的表,而对作为用户的您没什么价值。如果它是空值,则您会得到所有这些表。如果您将其设为包含字符串“TABLES”的单元素数组,您将仅获得对用户有用的表格。 |
用于从数据库中获取表名的简单代码相当于获取 DatabaseMetaData 对象,并从其中检索表名:
con = DriverManager.getConnection(url);//获取数据库的元数据dma =con.getMetaData();//将数据库中的表的名称转储出来String[] types = new String[1];types[0] = "TABLES"; //设置查询类型//请注意通配符是 % 符号(而不是“*”)results = dma.getTables(null, null, "%", types);
然后,我们可以打印出表名,正如我们上面所做的那样:
boolean more = results.next();while (more) { for (i = 1; i <= numCols; i++) System.out.print(results.getString(i)+" "); System.out.println(); more = results.next(); }如前文所述,将所有代码包括在 try 块中。
执行 SQL 查询
我们已经理解了 JDBC 的基本对象,现在就可以执行 SQL 查询了。查询是作为 Statement 对象的方法执行的,您很容易从 Connection 对象获得Statement对象:String query = "SELECT FoodName FROM Food;";ResultSet results;try { Statement stmt = con.createStatement(); results = stmt.executeQuery(query); } catch (Exception e) {System.out.println("query exception");}请注意,这个简单的查询返回 Food 表中的整个 FoodName 列。您使用像这样的简单查询获取整个列的内容。请注意,查询的查询本身是一个 ResultSet,您可以用我们上面刚讨论过的方法对它进行处理。
打印 ResultSet
因为我们总是要从 ResultSets 中打印数据,我们可以设计一种简单的方法,将整个 ResultSet 转储出来,包括表名称元数据。该子程序如下所示:private void dumpResults(String head) { //这是打印列标头和每列的内容的 //通用方法 System.out.println(head); try { //从元数据中获取列数 rsmd = results.getMetaData(); numCols = rsmd.getColumnCount(); //打印列名 for (i = 1; i<= numCols; i++) System.out.print(rsmd.getColumnName(i)+" "); System.out.println(); //打印列内容 boolean more = results.next(); while (more) { for (i = 1; i <= numCols; i++) System.out.print(results.getString(i)+" "; System.out.println(); more = results.next(); } } catch(Exception e) {System.out.println(e.getMessage());}}





