请教代码是否规范合理,主要涉及异常和数据库连接
想学着尝试写规范而且合理的代码,主要是针对异常处理和数据库连接操作的,希望高手们给予指点。
代码的意图如下:
类Connctn有个static方法getCon(),用于返回一个Connection con,代码略;
ServletA调用Connctn,得到数据库连接con,然后调用一个类ClassB,把con及几个SQL字符串给ClassB,ClassB处理完后返回给ServletA一些Vector,ServletA将Vector给JavabeanC,然后forward,以后的省略。
代码如下:
----------------ServletA
public class ServletA extends HttpServlet {
private Connection con;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
this.con=DataBaseCon.getCon();//--------注意的是,这个类本身并未对数据库进行操作
//省略若干行代码……
Vector v=new Vector();
ClassB b=new ClassB(con);
JavabeanC c=new JavabeanC();
String sql=……;
v=b.getResult(sql);
c.setAAA(v);
sql=……;
v=b.getResult(sql);
c.setAAA(v);
……
try {
con.close();
}
catch (Exception e) {
System.out.println("关闭数据库连接时出现异常!");
e.printStackTrace();
}
forward
……
}
}
----------------ClassB
public class ClassB{
private Connection con;
public GetRecord(Connection con) {//用构造方法来获得数据库连接
this.con=con;
}
public Vector getResult(String sql) {
Vector v=new Vector();
try {
PreparedStatement pstmt=con.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
……
v.add(……;
}
rs.close();
pstmt.close();
}
catch(SQLException sqle) {
System.out.println("类ClassB读取数据库时出现异常,可能导致数据不完整!");
sqle.printStackTrace();
}
catch(Exception e) {
System.out.println("类ClassB出现异常!");
e.printStackTrace();
}
return v;
}
}
问题一:为了避免频繁的调用ClassB可能会造成多次的建立数据库连接,所以改在ServletA中建立连接,ClassB使用连接,最后在ServletA中关闭连接,这个想法应该是没有错的吧?那么我的具体实现在实际应用中是否可行,或者有无更好的方法???
问题二:在ClassB中如果出现异常,程序跳转到Catch处,那么是否有必要将rs.close();和pstmt.close();也像ServletA中con.close();那样写到finally中???
最后,请高手们指点我的程序里其他应该改进的地方,谢谢。