中易网

求救!jsp中无法使用自定义的封装数据库操作的类

答案:2  悬赏:20  
解决时间 2021-03-09 11:38
小弟是用的JSP+TOMCAT+MYSQL做的网站
自己照书上写了一个封装数据库操作的类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(" "+" "+name+" "+" ");
out.println(" ");
}
rs.close();
DBm.close();
%>

改了,还是不行啊
最佳答案
那没关系的,你在jsp页面中把异常抓上,另外你的数据库连接类写的太复杂了~这样不太好,就返回一个连接的方法就行,还有一个返回查询数据集的方法就可以了~
全部回答
你把这两句: ResultSet rs=null; rs=DBm.executeQuery(sql); 合成一句: ResultSet rs=DBm.executeQuery(sql);
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
凤记食品地址在什么地方,想过去办事
我在江苏拨打云南的号码,但是她人在浙江!这
腊月二十九是什么星座
仙剑3和仙剑1的联系
apache是怎么样发布应用程序的?怎么部署?
枫桥大厦停车场地址在哪,我要去那里办事
lua 可以把C#的类当做元表继承使用吗?有什么
请问聊城市临清市会计培训学校哪家好呢?求答
节食减肥40天掉了,13斤之厚,再也不掉称了
请问,建大雄宝殿面积1600平方米,每平方米人
赣州哪里的医院引产不要证明
quartus ii 中怎么调用ip
用了除痘印膏后脸部脱皮不痛不痒的,脱皮是为
深州招商银行的地址
邕味斋酸品王水晶城店地址在哪,我要去那里办
推荐资讯
三星手机都可以用电信卡吗?
全国汉语作文考级嘉兴市考点怎么去啊,有知道
戴尔1370笔记本网卡在什么位置
姓邱,带个“锦”字中间字取名。
结婚证领的迟小孩上户罚款吗
为什么这个世界总是充满了欺骗?
如何拒绝别人的请求
VE造型地址在哪,我要去那里办事
种植牙的种类有哪些
1978年7月11辰时五行属什么
老宝来1.8 20气门发动机为什么停产?是因为成
很羡慕人家有闺蜜,什么都可以说,有事可以两
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?