帮我看下哪里错了,这个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
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();记得结帖给分:)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
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)
root cause java.lang.NullPointerException
jbean.Sdb.closeStmt(Sdb.java:82)
org.apache.jsp.examples._1_jsp._jspService(_1_jsp.java:103)
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)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
你在方法中重新声明的一个局部的statement,这样的话,全局的还是没有得到过.
所有关闭的时候,当然会报错...
{
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);
}
都在那猜什么呢?
你们没有看到stmt有全局的,也有局部的定义吗? 他最后要关的是全局的....
全局的什么时候得到过值的???????????????
直接写执行那一句就可以了,再有就是你的关闭少了rs.close();
建议你把你的代码重新整理一下,再去执行程序.