ResultSet tables= dmb.getTables("", "", null, null);
用在mysql中可以查出改数据库下的所有用户的表。而在Oracle中却是所有系统表
ResultSet tables= dmb.getTables("CRM", "dbo", null, null);
这语法在sqlserver中却把视图和表一起查出来了,虽然没有系统表哪位大侠能告诉我这玩意怎么用啊 ~~~~~泪奔~~~~~~~~~~
用在mysql中可以查出改数据库下的所有用户的表。而在Oracle中却是所有系统表
ResultSet tables= dmb.getTables("CRM", "dbo", null, null);
这语法在sqlserver中却把视图和表一起查出来了,虽然没有系统表哪位大侠能告诉我这玩意怎么用啊 ~~~~~泪奔~~~~~~~~~~
String schemaPattern,
String tableNamePattern,
String[] types)
throws SQLException
catalog指的是数据库
schemaPattern是数据库的用户
tableNamePattern是表名
types指的是table、view等
Java代码
public class TestGettable {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String url = "jdbc:oracle:thin:@192.168.0.184:1521:orcl";
String[] types = { "TABLE" };// 数组变量types
String tt, tp;
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, "icd", "icd");
System.out.println("ok!连接成功!!!!!");
DatabaseMetaData dmd = con.getMetaData();
// 获取表的相关信息(包括用户建立的表和系统表)
ResultSet rs = dmd.getTables(null, null, null, types);
/*
* // 获取表,视图相关信息(包括用户建立的表和系统表,以及所有视图)
*
* ResultSet rs=dmd.getTables(null,null,null,null);
*
*/
while (rs.next()) {
tt = rs.getString("TABLE_NAME");
tp = rs.getString("TABLE_TYPE");
System.out.println(" 表的名称 " + tt + " 表的类型 " + tp);
}
// 关闭连接
con.close();
}
}
看看能明白么】
首先jdbc这个层面有的只是一个规范(从程序层面来说就一个接口),具体每个数据库如何实现这个规范,就不是jdbc自己的事情的,而是每个具体数据库的事情了。对于jdbc的同一个方法,不同数据库实现结果不一样也是情理之中的事了。你可以做一个自己抽象的类定义一个getTable方法,然后针对每个数据库给出不同实现类去覆盖getTable方法。象hibernate这么伟大的框架都对不同数据库做了dialect处理,所以你也可加一层处理,去包装不同数据库的差异。
Java代码
public class TestGettable {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String url = "jdbc:oracle:thin:@192.168.0.184:1521:orcl";
String[] types = { "TABLE" };// 数组变量types
String tt, tp;
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, "icd", "icd");
System.out.println("ok!连接成功!!!!!");
DatabaseMetaData dmd = con.getMetaData();
// 获取表的相关信息(包括用户建立的表和系统表)
ResultSet rs = dmd.getTables(null, null, null, types);
/*
* // 获取表,视图相关信息(包括用户建立的表和系统表,以及所有视图)
*
* ResultSet rs=dmd.getTables(null,null,null,null);
*
*/
while (rs.next()) {
tt = rs.getString("TABLE_NAME");
tp = rs.getString("TABLE_TYPE");
System.out.println(" 表的名称 " + tt + " 表的类型 " + tp);
}
// 关闭连接
con.close();
}
}
看看能明白么】