当前位置: 技术问答>java相关
弄了一天了!!!大家帮帮忙阿,高分!!!!
来源: 互联网 发布时间:2015-09-05
本文导语: 我写了一个java类来配合jsp调用sqlserver的存储过程,但是老是说 java.lang.NullPointerException 请大家帮忙看看,真是太奇怪了!!!!! import DataBase; import java.sql.*; import java.util.*; import ReadDBConfig; /** * Title: * Descripti...
我写了一个java类来配合jsp调用sqlserver的存储过程,但是老是说
java.lang.NullPointerException
请大家帮忙看看,真是太奇怪了!!!!!
import DataBase;
import java.sql.*;
import java.util.*;
import ReadDBConfig;
/**
*
*
*
*
* @author unascribed
* @version 1.0
*/
public class Storage{
private ResultSet sqlRst=null;
private CallableStatement sqlStmt=null;
Connection con=null;
DataBase a=null;
public void jspInit(){
a=new DataBase();
con=a.getConn();
}
public void jspDestory()throws Exception{
a.closeDB();
}
public ResultSet transfer(String sql,String strname){
try{
sqlStmt = con.prepareCall(sql);
//执行该存储过程并返回结果集
sqlStmt.setString(1,strname);
sqlRst = sqlStmt.executeQuery();
System.out.println("ok");
}catch(Exception e){
System.out.println("Error from transfer!"+e) ;
}finally{
return sqlRst;
}
}
public static void main(String[] args) {
try{
Storage storage1 = new Storage();
}catch(Exception e){ System.out.println(e) ;}
}
}
jsp为:
从存储过程中取数据
java.lang.NullPointerException
请大家帮忙看看,真是太奇怪了!!!!!
import DataBase;
import java.sql.*;
import java.util.*;
import ReadDBConfig;
/**
*
Title:
*
Description:
*
Copyright: Copyright (c) 2002
*
Company:
* @author unascribed
* @version 1.0
*/
public class Storage{
private ResultSet sqlRst=null;
private CallableStatement sqlStmt=null;
Connection con=null;
DataBase a=null;
public void jspInit(){
a=new DataBase();
con=a.getConn();
}
public void jspDestory()throws Exception{
a.closeDB();
}
public ResultSet transfer(String sql,String strname){
try{
sqlStmt = con.prepareCall(sql);
//执行该存储过程并返回结果集
sqlStmt.setString(1,strname);
sqlRst = sqlStmt.executeQuery();
System.out.println("ok");
}catch(Exception e){
System.out.println("Error from transfer!"+e) ;
}finally{
return sqlRst;
}
}
public static void main(String[] args) {
try{
Storage storage1 = new Storage();
}catch(Exception e){ System.out.println(e) ;}
}
}
jsp为:
从存储过程中取数据
|
try
{
ResultSet sqlRst = db.transfer(strsql1,strname1);
if(sqlRst == null)
{
System.out.println("This ResultSet is " + null);
}
}
在jsp中对数据库操作也要放到try块内。
怀疑没有正确得到sqlRst的对象。
{
ResultSet sqlRst = db.transfer(strsql1,strname1);
if(sqlRst == null)
{
System.out.println("This ResultSet is " + null);
}
}
在jsp中对数据库操作也要放到try块内。
怀疑没有正确得到sqlRst的对象。
|
假如:
sqlRst.getString(1); 或者sqlRst.getString(2); 为空,你对他造操作时可能也产生空指针异常,所以给你一个方法。
public String NullToSp(String Col) {
if (Col == null)
return "";
else
return Col.trim();
}
strwelcome = NullToSp(sqlRst.getString(1));
strmyname = NullToSp(sqlRst.getString(2));
就没有问题了,
sqlRst.getString(1); 或者sqlRst.getString(2); 为空,你对他造操作时可能也产生空指针异常,所以给你一个方法。
public String NullToSp(String Col) {
if (Col == null)
return "";
else
return Col.trim();
}
strwelcome = NullToSp(sqlRst.getString(1));
strmyname = NullToSp(sqlRst.getString(2));
就没有问题了,
|
也要把sqlStmt关闭掉。
jsp为:
从存储过程中取数据
jsp为:
从存储过程中取数据
|
简单
原因:sqlRst有可能为空。
改正:将
//获取来自结果集中的数据
sqlRst.next();
//获取输出参数的值
strwelcome = sqlRst.getString(1);
strmyname = sqlRst.getString(2);
改为
if (sqlRst.next())
{
//获取输出参数的值
strwelcome = sqlRst.getString(1);
strmyname = sqlRst.getString(2);
}
给分吧,good luck!!!
原因:sqlRst有可能为空。
改正:将
//获取来自结果集中的数据
sqlRst.next();
//获取输出参数的值
strwelcome = sqlRst.getString(1);
strmyname = sqlRst.getString(2);
改为
if (sqlRst.next())
{
//获取输出参数的值
strwelcome = sqlRst.getString(1);
strmyname = sqlRst.getString(2);
}
给分吧,good luck!!!