写了访问数据库的类,运行没有问题,请大家评价一下代码与面向对向编程的意见!来者有份! javabandit(bandit):能问问何为对文件的支持,请教一下!天山风:我对连接池的概念一点也不清楚,能否指点一下,如果提示一下基本概念!找不到服务器:没有使用对像是什么意思!扩展时肯定得修改代码,现在我们单位只用到这三种数据库!所以只有这三种,我想:您是否有什么好的方法解决!请教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你有没有在控制面板里设置数据库联接?或是将Oracle 中的classes12.jar加入到classpath中? 用String[][]作为参数传递??不太好吧还是用arrayList好!! rollingpig(rollingpig):你说得很对啊,如果数据库有很多条记录时,我想肯定会出现在内存问题的。lhlhxb(就随风):你好,我想对加入一些JAR包到环境变量中那是肯定的,只能手工写入。我的控制面板是写的一个配置文件,XML格式,我同时也写了一个关于修XML配置文件的类,负责解析XML文件,读写删。unsalted(icebird):谢谢你讲数据库连接池的概念! 既然楼主也在征求大家对他的代码的意见,也来说几句:(1) 类名取得不好,通常情况下类名应该是一个名词,但是你的类名ConnectDB是一个动作.(2) 做成单例没有什么问题,但是getInstance()方法欠妥.public static ConnectDB getInstance(int nDatabaseType){return (null == INSTANCE) ? (INSTANCE = new ConnectDB(nDatabaseType)) : INSTANCE;}没有线程同步的保护.加上sync或者不要延迟初始化,或者使用Holder内部类.INSTANCE也最好不要publicbtw, 能写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) 最后的问题是,没有把抽象定义清楚,所有的东西都耦合在一起,造成一个大杂汇.所以,我不认为这个类写得好,也觉得没有什么必要的意义.评论对类不对人.纯属个人意见而已. 【求助】关于java输入语句异常的处理 一个很基础的java程序,怎么就是读不懂啊,高手过来看看 大家帮我看个小代码,为什么左键也响应PopMenu java中如何同时向父表和子表中插入数据记录? 字符比较问题(新手提问) 请教对话框如何在任务栏显示?? [求助]如何把这个APPLET保存到本地? 谁能告诉我98下的环境变量要如何配置呀 莫名其妙的简单算数计算错误,请高手指教!! 怎么用五角星来选择强度? 初学JAVA 怎样编译JAVA文件(做了一个sample.java文件,不知道怎样编译) 如何让同一个文本框内的文字拥有不同的字体及颜色?
不太好吧
还是用arrayList好!!
(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) 最后的问题是,没有把抽象定义清楚,所有的东西都耦合在一起,造成一个大杂汇.所以,我不认为这个类写得好,也觉得没有什么必要的意义.
评论对类不对人.纯属个人意见而已.