日期:2014-05-20  浏览次数:20662 次

大家帮我看看这个问题应该怎么解决?类怎么设计
我想完成的功能如下:
根据不同数据库建立不同的数据库连接从而得到数据库的一些信息(这些信息都是通过查找数据库中的表得到的)。对于不同的数据库,可能得到的东西不同,如:oracle可能得到表空间名、表名等信息;SQL   Server可能得到数据库名和表名等信息。现在怎么能对外部而言提供统一的方法调用反回这些信息?
类怎么设计划分呀?谢谢。

------解决方案--------------------
连接数据库都是相同的啊。除了driver不同。
从driver里可以区分是什么数据库了。
------解决方案--------------------
除了driver不同之外,有一部分SQL语句也不同
跨数据库,建议看下HIBERNATE
------解决方案--------------------
定义一个接口,包含一个getConnection()方法;
然后根据不同的数据库去实现这个接口,
然后用工厂模式实现一个统一的用户调用接口
------解决方案--------------------
提供个思路,可以把所有的驱动都列出来,写一个连接方法,根据用户所选的数据库类型,把对应的驱动作为参数传进去,进行连接,连接之后得到一个Connection对象(conn) ,可以用下面代码列出表信息,

try{
DatabaseMetaData metaData = conn.getMetaData();
ResultSet rs = metaData.getTables(null, null, "% ", null);
List allTables = new ArrayList();
while (rs.next()) {
String name = rs.getString(3);
String type = rs.getString(4);
int i=0;
if (type.equalsIgnoreCase( "TABLE ")) {
allTables.add(name);
}
}
}catch(Exception e){
System.out.println(e.toString());
}