拜个早年:祝工作顺利!麻烦大家帮我看下我写的这个java连接数据库类哪错了——?

waiterNet 2007-02-02 09:27:44
这个是接口:
package com.hy;

import java.sql.Connection;
import java.sql.ResultSet;

public interface IDb {
public Connection createCon();
public void createStatement();
public ResultSet createResultSet();
}


这个是实现接口的类
package com.hy;

import java.sql.*;


public class DbOperate implements IDb{
private Connection con=null;
private Statement stmt=null;
private ResultSet rs=null;

private String driver=null;
private String url;
private String username;
private String password;

public DbOperate(String driver,String url,String username,String password){
this.driver=driver;
this.url=url;
this.username=username;
this.password=password;
}
public Connection createCon() {

Class.forName(driver);
con=DriverManager.getDriver(url,username,password);
return con;
}

public ResultSet createResultSet(String sql) {

try {
rs=stmt.executeQuery(sql);
} catch (SQLException e) {

e.printStackTrace();
}
return rs;
}

public void createStatement() {
// TODO Auto-generated method stub

try {
stmt=con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}

}
不知道这么写哪里错了,我想把代码写规范了,也就是说该有的接口都有,可是我不知道该怎么写了,麻烦前辈帮我指点一下,谢谢了,顺便拜个早年,祝工作顺利!
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guzuoshantou 2007-02-06
  • 打赏
  • 举报
回复
不对的地方还请指教
guzuoshantou 2007-02-06
  • 打赏
  • 举报
回复
代码里面的错误就不说了,你的这个类设计的有大大的问题
假设你需要用到此类时:
DbOperate db=new DbOperate(driver,url,username,password);
Connection con=db.createCon();
db.createStatement() ;
ResultSet rs=db.createResultSet(sql);
1.构造方法
你每次都要用new 来创建这个对象并传入一大堆参数,但应用程序通常只需要同样的信息,既然参数的值每次都一样,你就应该把它在类里初始化掉,无需接受调用者传入。可以在类里写个静态块从一个属性配置文件读取数据库连接的基本信息。
2.createCon()方法
这个方法有一句Class.forName(driver);用以加载驱动,但驱动只要加载一次即可,所有应该把这句话移到静态块中执行。
3.createStatement() 和 createResultSet()方法
在调用createResultSet()方法时你得保证在这之前已经调用了createStatement() 方法,而你又得保证在这之前调用了createCon()方法,但是按设计类的原则来说你不能保证外部会按照你想的顺序调用。这几个方法不能互相独立,所以要重新设计。

还有很多要改进的地方,最好的方式就是把这个类删了,好好再学学面象对象的思想,如何设计一个即正确又高效又优雅又明确的类及接口。然后再重新写
ABCatai 2007-02-05
  • 打赏
  • 举报
回复
tong yi lou shang
szm880828 2007-02-03
  • 打赏
  • 举报
回复
错了。是con = DriverManager.getConnection(链接方法,用户,密码);
你用的这个getDriver() 方法就不是链接用的。返回的是Driver 是选择相应的驱动程序的。素以你用错了
martinyuan 2007-02-03
  • 打赏
  • 举报
回复
应该是con=DriverManager.getConnection(url,username,password);吧
s1t05002 2007-02-03
  • 打赏
  • 举报
回复
我觉得 con=DriverManager.getDriver(url,username,password);
好像有点问题,getDriver()方法的返回值是Driver类型,能直接给Collection类型吗???

我也刚刚学JAVA,如果说错了,别BS我啊!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧