自己照书上写了一个封装数据库操作的类SqlManager,无论在elipse或命令行中调用都可以正确从数据库取回数据并显示,但是一到了JSP页面中使用就报SQLException错误,说是执行SQL语句时java.lang.nullpoiter,不知道是什么原因,自己实在搞不定了,希望达人帮忙看看,以下是我的
SqlManager代码和JSP页面代码:
系统说错误出在SqlManager.executeQuery()这一步上
SqlManager:
package samples;
import java.sql.*;
import java.util.PropertyResourceBundle;
public class SqlManager {
private static SqlManager p=null;
private PropertyResourceBundle bundle;
private static String jdbcDriver=null;
private String DBhost=null;
private String DBname=null;
private String DBport="";
private String DBuser="";
private String DBpasswd="";
private Connection Sqlconn=null;
private Statement Sqlstmt=null;
private String strCon=null;
private SqlManager(){
try{
bundle=new PropertyResourceBundle(SqlManager.class.getResourceAsStream("/sysConfig.properties"));
this.DBhost=getString("DBhost");
this.DBname=getString("DBname");
this.DBport=getString("DBport");
this.DBuser=getString("DBuser");
this.DBpasswd=getString("DBpasswd");
jdbcDriver="com.mysql.jdbc.Driver";
strCon="jdbc:mysql://"+DBhost+":"+DBport+"/"+DBname;
}
catch(Exception e){
e.printStackTrace();
}
}
public static SqlManager createInstance(){
if(p==null){
p=new SqlManager();
p.initDB();
}
return p;
}
private String getString(String s){
return this.bundle.getString(s);
}
private void initDB(){
try{
Class.forName(jdbcDriver);
}catch(Exception ex){
System.err.println("Can't Find Database Driver");
}
}
public void connectDB(){
try{
Sqlconn=DriverManager.getConnection(strCon,DBuser,DBpasswd);
Sqlstmt=Sqlconn.createStatement();
}catch(SQLException ex){
System.err.println("connectDB"+ex.getMessage());
}
}
public void closeDB(){
try{
Sqlstmt.close();
Sqlconn.close();
}catch(SQLException ex){
System.err.println("closeDB:"+ex.getMessage());
}
}
public int executeUpdate(String sql){
int ret=0;
try{
ret=Sqlstmt.executeUpdate(sql);
}catch(SQLException ex){
System.err.println("executeUpdate:"+ex.getMessage());
}
return ret;
}
public ResultSet executeQuery(String sql){
ResultSet rs=null;
try{
rs=Sqlstmt.executeQuery(sql);
}catch(SQLException ex){
System.err.println("executeQuery:"+ex.getMessage());
}
return rs;
}
public static void main(String[] args){
SqlManager.createInstance().connectDB();
SqlManager.createInstance().closeDB();
}
}
JSP页面调用类部分的代码:
<%@page import="samples.SqlManager"%>
<%String sql="select Name from staff";
ResultSet rs=null;
SqlManager DBm=SqlManager.createInstance();
DBm.connectDB();
rs=DBm.executeQuery(sql);
while(rs.next()){
String name=rs.getString("Name");
out.println("
out.println("
out.println("
}
rs.close();
DBm.close();
%>
改了,还是不行啊