问题有点棘手,JDBC的关闭连接问题

J2EE 码拜 10年前 (2015-05-11) 759次浏览 0个评论
 

conn是已经获得的一个连接,stmt是Statement的一个对象,rst是ResultSet的一个对象
它是按种类名称,来查询这个类是否在表中;
在CategoryManager.java中定义了一个方法,代码如下(这个类是编译通过的)
public boolean havaCategory(String cateName)throws Exception{
String correct =”select categoryID from category where categoryNAME=”””+cateName+””””;
stmt = conn.createStatement();
rst = stmt.executeQuery(correct);
try{
if(cateName==null || cateName.equals(“”)){
return false;
}
if(!rst.next()){
return false;
}
return true;
}catch(SQLException e){
return false;
}catch(Exception ex){
return false;
}finally{
try{
stmt.close();
conn.close();
}catch(SQLException ex){
return false;
}
}//end finally block;
}//end cateNameToID method;

我在另一个类中调用它:
CategoryManager cateManager = new CategoryManager();
boolean havaCate = cateManager.havaCategory(“123”);
在编译的时候,告诉我:
 unreported exception java.lang.Exception; must be caught or declared to be thrown

大家看我哪里写的不对吗?

**但如果我不关闭连接,就不会出现这种情况,但这样使的人多了肯定会出问题的呀……请大家帮忙看下……谢了

stmt = conn.createStatement();
rst = stmt.executeQuery(correct);

把这两个语句也放到try块里面去.

放进去了……但……依然不行……
刚试了下,即使不关连接也是报这个错;这是我servlet里的service的代码
public void service(final HttpServletRequest req,
final HttpServletResponse res)throws IOException,ServletException
{
String categoryName = req.getParameter(“categoryName”);
Category cate = new Category();
CategoryManager cateManager = new CategoryManager();
boolean havaCate = cateManager.havaCategory(categoryName);

}//end doPost method

20分
你把测试代码写在JSP页里看看,如果JSP页里输出正确,就说明是你servlet的问题;
最简单的办法,你把程序里抛错的那段,都TRY进去
这样做是不是有点野蛮?HEHE
谢谢,这样子倒是可以了,但我想知道这是为什么??明天结吧
应该把            stmt = conn.createStatement();
rst = stmt.executeQuery(correct);
放到try里面去,关闭的时候应该先rst.close();
20分
public boolean havaCategory(String cateName)throws Exception

看你的方法定义,已经定义了抛出异常
所以在使用这个方法的时候要把他放到try…catch里面去

10分
直接throws Exception 就可以了吧
     自己多实验一下就什么都知道了
恩,明白了,谢谢大家了:)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问题有点棘手,JDBC的关闭连接问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!