以下是一个jsp页面和数据库连接bean
在执行jsp的时候,不知道为什么总是出现异常,提示null point,不知是不是数据库连接不上?怎么样才能正确连接?各位帮忙提点,不胜感激!【付】:我已把mysql-connector-java-5.0.4-bin.jar,mysql-connector-java-5.0.4-bin-g.jar加到了classpath下
//jsp.jsp页面
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<jsp:useBean id="ConnBean" scope="page" class="db.ConnMySQL"/>
<html><body><%
String sql="select * from Customer";
ConnBean.setConnParam("com.mysql.jdbc.Driver","jdbc:mysql://localhost:3306/ConDa","root","sa");
ResultSet rs=ConnBean.executeQuery(sql);
try{
while(rs.next()) {%> 您的第一个字段内容为:<%=rs.getString(1)%> 您的第二个字段内容为:<%=rs.getString(2)%>
<%}
}
catch(Exception ex){
out.print(ex.getMessage());
}
%><%out.print("数据库操作成功,恭喜你");%><%rs.close();
ConnBean.close();
%></body></html>
//以下是我的数据库连接bean
package db;
import java.sql.*;public class ConnMySQL{
private Connection connect = null;
private ResultSet rs = null;
private String driverName = null;
private String jdbcURL = null;
private String userName = null;
private String uPwd = null; public void setConnParam(String dr,String ju,String un,String pwd){
this.driverName = dr;
this.jdbcURL = ju;
this.userName = un;
this.uPwd = pwd;
}
private void open(){
try{
if(connect.isClosed()){
Class.forName(driverName).newInstance();
this.connect = DriverManager.getConnection(jdbcURL,userName,uPwd);
}
}
catch(Exception ex){
System.err.print(ex.getMessage());
}
} public ResultSet executeQuery(String sql)
{
try {
this.open();
Statement stmt=this.connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
return rs;
} public int executeUpdate(String sql)
{
int result=0;
try {
this.open();
Statement stmt=this.connect.createStatement();
result=stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
return result;
} public void close(){
try{
if(!connect.isClosed()){
connect.close();
}
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
catch(Exception ex){
System.err.print(ex.getMessage());
}
}
}
在执行jsp的时候,不知道为什么总是出现异常,提示null point,不知是不是数据库连接不上?怎么样才能正确连接?各位帮忙提点,不胜感激!【付】:我已把mysql-connector-java-5.0.4-bin.jar,mysql-connector-java-5.0.4-bin-g.jar加到了classpath下
//jsp.jsp页面
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<jsp:useBean id="ConnBean" scope="page" class="db.ConnMySQL"/>
<html><body><%
String sql="select * from Customer";
ConnBean.setConnParam("com.mysql.jdbc.Driver","jdbc:mysql://localhost:3306/ConDa","root","sa");
ResultSet rs=ConnBean.executeQuery(sql);
try{
while(rs.next()) {%> 您的第一个字段内容为:<%=rs.getString(1)%> 您的第二个字段内容为:<%=rs.getString(2)%>
<%}
}
catch(Exception ex){
out.print(ex.getMessage());
}
%><%out.print("数据库操作成功,恭喜你");%><%rs.close();
ConnBean.close();
%></body></html>
//以下是我的数据库连接bean
package db;
import java.sql.*;public class ConnMySQL{
private Connection connect = null;
private ResultSet rs = null;
private String driverName = null;
private String jdbcURL = null;
private String userName = null;
private String uPwd = null; public void setConnParam(String dr,String ju,String un,String pwd){
this.driverName = dr;
this.jdbcURL = ju;
this.userName = un;
this.uPwd = pwd;
}
private void open(){
try{
if(connect.isClosed()){
Class.forName(driverName).newInstance();
this.connect = DriverManager.getConnection(jdbcURL,userName,uPwd);
}
}
catch(Exception ex){
System.err.print(ex.getMessage());
}
} public ResultSet executeQuery(String sql)
{
try {
this.open();
Statement stmt=this.connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
return rs;
} public int executeUpdate(String sql)
{
int result=0;
try {
this.open();
Statement stmt=this.connect.createStatement();
result=stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
return result;
} public void close(){
try{
if(!connect.isClosed()){
connect.close();
}
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
catch(Exception ex){
System.err.print(ex.getMessage());
}
}
}
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:207)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)
root cause java.lang.NullPointerException
at org.apache.jsp.jsp_jsp._jspService(jsp_jsp.java:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:162)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)
package db;
import java.sql.*;/*--------------------------------
Function Detail : 根据连接池连接数据库,并提供相对对表的操作
Date : 2006-8-12
Author : liaohaiying
Version : longying 1.0
*/
public class ConnMySQL
{
private Connection mobjConn = null;
private Statement mobjState = null;
private Statement mobjState1 = null;
private ResultSet mobjRs = null;
private CallableStatement pobjCst = null;
//构造函数
public ConnMySQL() throws Exception
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url ="jdbc:mysql://localhost/ConDa?user=root&password=sa&useUnicode=true&characterEncoding=gb2312";
mobjConn = DriverManager.getConnection(url);
mobjState = mobjConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
mobjState1 = mobjConn.createStatement();
}
public Connection getConnection()
{
return mobjConn;
} //返回只读ResultSet对象
public ResultSet getResultSetForwardOnly(String pstrSql) throws SQLException
{
mobjRs = mobjState.executeQuery(pstrSql);
return mobjRs;
}
//返回ResultSet对象
public ResultSet getResultSet(String pstrSql) throws SQLException
{
mobjRs = mobjState1.executeQuery(pstrSql);
return mobjRs;
}
//执行SQL语句,并返回结果
public boolean executeUpdate(String pstrSql) throws SQLException
{
return (mobjState.executeUpdate(pstrSql) > 0 ? true:false);
}
//创建CallableStatement对象,其创建的ResultSet可以滚动
public CallableStatement getCallableMove(String pstrProcName) throws SQLException
{
pobjCst = mobjConn.prepareCall(pstrProcName,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
return pobjCst;
} //通过执行SQL语句,返回 PreparedStatement
public PreparedStatement getPreparedStatement(String pstrSQL) throws SQLException
{
return mobjConn.prepareStatement(pstrSQL);
}
//通过执行SQL语句,返回 Statement
public Statement createStatement() throws SQLException
{
return mobjState;
}
public void setAutoCommit() throws SQLException
{
mobjConn.setAutoCommit(true);
}
public void commit() throws SQLException
{
mobjConn.commit();
}
}
再把你的JSP文件中改成这一段
<%
try{
ConnMySQL mobjDatabase = new ConnMySQL();
String pstrSQL = "select * from Customer";
ResultSet rs = mobjDatabase.getResultSetForwardOnly(pstrSQL);
while (rs.next())
{
%> 您的第一个字段内容为:<%=rs.getString(1)%> 您的第二个字段内容为:<%=rs.getString(2)%>
<%
}
rs.close();
}
catch(Exception ex){
out.print(ex.getMessage());
}%>