javabandit(bandit):能问问何为对文件的支持,请教一下!天山风:我对连接池的概念一点也不清楚,能否指点一下,如果提示一下基本概念!找不到服务器:没有使用对像是什么意思!扩展时肯定得修改代码,现在我们单位只用到这三种数据库!所以只有这三种,我想:您是否有什么好的方法解决!请教!

解决方案 »

  1.   

    你有没有在控制面板里设置数据库联接?或是将Oracle 中的classes12.jar加入到classpath中?
      

  2.   

    用String[][]作为参数传递??
    不太好吧
    还是用arrayList好!!
      

  3.   

    rollingpig(rollingpig):你说得很对啊,如果数据库有很多条记录时,我想肯定会出现在内存问题的。lhlhxb(就随风):你好,我想对加入一些JAR包到环境变量中那是肯定的,只能手工写入。我的控制面板是写的一个配置文件,XML格式,我同时也写了一个关于修XML配置文件的类,负责解析XML文件,读写删。unsalted(icebird):谢谢你讲数据库连接池的概念!
      

  4.   

    既然楼主也在征求大家对他的代码的意见,也来说几句:
    (1) 类名取得不好,通常情况下类名应该是一个名词,但是你的类名ConnectDB是一个动作.
    (2) 做成单例没有什么问题,但是getInstance()方法欠妥.
    public static ConnectDB getInstance(int nDatabaseType){
    return (null == INSTANCE) ? (INSTANCE = new ConnectDB(nDatabaseType)) : INSTANCE;
    }
    没有线程同步的保护.加上sync或者不要延迟初始化,或者使用Holder内部类.
    INSTANCE也最好不要public
    btw, 能写null==INSTANCE说明楼主是有一定经验的开发者.
    (3) public String[][] getQueryRecord()方法的try-ctach不完整;
    下面说说设计的问题,可能有点打击楼主,整体的感觉是:"乱"
    也不分先后了.
    (1) ConnectDB是面向的JDBC的,和数据库是什么应该根本没有关系,所以你传入sybase, oracle等仅仅是为了获取不同的XML的参数,这是不相关的事,你放在了一起;
    (2) ConnectDB始终维护只有一条数据库连接,所有的操作都必须是串行在这个联接上完成的,但是调用你的ConnectDB的客户端很有可能进行并发的数据库处理,你怎么处理?这是最大的问题.[看看楼上关于连接池的建议,对于java.sql.Connect这类的重量级对象,对象池是最好的解决方案\]
    (3) ConnectDB把获取数据库连接,执行查询,更新,等等操作都放在一起,而且还提供对结果集meta-data的信息获取,造成你的ConnectDB极其臃肿,职责不清晰,没有办法更好的复用.耦合度太高.
    (4) 就代码论,if.elseif.elseif.和switch.case可以有更好的处理方法,虽然需要更多的工作量.
    (5) 异常处理得不好,特别在init()方法.至少应该抛出runtime级别的异常,因为无法加载驱动类你的这个类就没有任何意义.你完全屏蔽了SQLException,不一定是一个好做法.
    (8) 使用二维String数组绝对不是好做法,不过楼主自己也意识到了.:)
    (7) 最后的问题是,没有把抽象定义清楚,所有的东西都耦合在一起,造成一个大杂汇.所以,我不认为这个类写得好,也觉得没有什么必要的意义.
    评论对类不对人.纯属个人意见而已.