首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

为什么小弟我不能调用java bean的有些函数

2013-09-11 
为什么我不能调用java bean的有些函数帮我看下哪里错了,这个javabean编译是通过的,可就是调用closeStmt()

为什么我不能调用java bean的有些函数
帮我看下哪里错了,这个javabean编译是通过的,可就是调用closeStmt()和closeConn()出错
1、这是我的javabean程序sdb.java
//   封装数据库连接及一些底层操作
package   jbean;
import   java.sql.*;
import   java.lang.*;
import   java.net.*;
import   java.io.*;
import   java.util.*;

public   class   sdb
{
Connection   conn=null;
ResultSet   rs=null;
Statement   stmt=null;
String   url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sdb ";
String   user= "sa ";
String   password= " ";
public   sdb()
{
try
{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ").newInstance();

  conn=   DriverManager.getConnection(url,user,password);
Statement   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}

catch(java.lang.Exception   e)
{
System.err.println( "mydb(): "+e.getMessage());
}

}


public   ResultSet   executeQuery(String   sql)
{
rs=null;
try
{
conn=   DriverManager.getConnection(url,user,password);
Statement   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//String   sql= "select   *   from   Students ";
  rs=stmt.executeQuery(sql);

}
catch(SQLException   ex)
{
System.err.println( "db,excuteQuery: "+ex.getMessage());
System.out.print( "执行有错误: "+ex.getMessage());//输出到客户端
}
return   rs;
}

public   boolean   executeUpdate(String   sql)
//public   ResultSet   executeUpdate(String   sql)
{
boolean   bupdate=false;
rs=null;
try
{
conn=   DriverManager.getConnection(url,user,password);
Statement   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

////stmt.executeUpdate(sql);
int   rowCount=stmt.executeUpdate(sql);
if(rowCount!=0)   bupdate=true;
}
catch(SQLException   ex)
{
System.err.println( "db,excuteUpdate: "+ex.getMessage());
System.out.print( "执行插入或删除有错误: "+ex.getMessage());//输出到客户端
}
return   bupdate;
//return   rs;
}

public   void   closeStmt()
{
try{
stmt.close();
}catch(SQLException   er)
{
er.printStackTrace();
}
}

public   void   closeConn()
{
try{
conn.close();
}catch(SQLException   er)
{
er.printStackTrace();
}

}

public   static   String   toChinese(String   str)
{
try
{
if(str==null)
{
return   null;
}
else
{
str=   new   String(str.getBytes( "gbk "));  
return   str;
}
}
catch(Exception   e)
{
return   null;
}

}
}


1.这个是调用javabean的程序1.jsp
<%@   page   contentType= "text/html;   charset=gb2312 "   language= "java "   import= "java.sql.* "   errorPage= " "   %>
<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN "   "http://www.w3.org/TR/html4/loose.dtd ">


<jsp:useBean   id= "sdb "   class= "jbean.sdb "   scope= "request "/>
<jsp:setProperty   name= "sdb "   property= "* "/>

<html>
<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 ">
<!--   TemplateBeginEditable   name= "doctitle "   -->
<title> 无标题文档 </title>
<!--   TemplateEndEditable   -->
<!--   TemplateBeginEditable   name= "head "   -->
<!--   TemplateEndEditable   -->
</head>


<body>
<%String   sql= "select   *   from   Students ";
ResultSet   rs=sdb.executeQuery(sql);
while(rs.next())
{
%>
<p> 第一个字段:
<%=rs.getString(1)%>
第二个字段:
<%=rs.getString(1)%>
</p>
<%
}
sdb.closeStmt();
sdb.closeConn();%>
</body>
</html>

3、错误描述是:
description   The   server   encountered   an   internal   error   ()   that   prevented   it   from   fulfilling   this   request.

exception  

javax.servlet.ServletException:   jbean.sdb.closeStmt()V
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.examples._1_jsp._jspService(_1_jsp.java:95)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802






[解决办法]
数据库关闭的不对,应添加
sdb.closeRs(){
try{
rs.close();
}catch(SQLException er)
{
er.printStackTrace();
}

};方法

关闭顺序如下
sdb.closeRs();
sdb.closeStmt();
sdb.closeConn();

记得结帖给分:)
[解决办法]
还是不行
[解决办法]
异常信息帖全了...
[解决办法]
这段bean好乱,应该不是关闭那个地方的问题,看看别的地方
[解决办法]
不是不能用 是有空指针jbean.Sdb.closeStmt(Sdb.java:82)

我也觉得是关闭顺序问题
[解决办法]
不是的,你要关的statement本来就是空的.
你在方法中重新声明的一个局部的statement,这样的话,全局的还是没有得到过.
所有关闭的时候,当然会报错...
[解决办法]
放在finally()里面去。按顺序关有错误,就关最上层的一个试试
[解决办法]
toChinese方法都知道判断一下str== null,那么close Statement和Connection的时候也加上==null的判断阿,那样就不会空指针了。
[解决办法]
你的构造函数里边都写完连接的代码了,为什么还要在执行函数里再写一边连接代码呢?
直接写执行那一句就可以了,再有就是你的关闭少了rs.close();
建议你把你的代码重新整理一下,再去执行程序.
我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html

热点排行