这个问题该如何解决呢?

laofei001 2007-04-04 10:22:12
代码1:
ResultSet rst=select.getResult("select * from CustomInfo where id="+id);
if(rst.next()){
......
}
执行这段代码的时候系统说if(rst.next())这条语句是操作空指针,为解决该问题,将代码1改为
ResultSet rst=select.getResult("select * from CustomInfo where id="+id);
//防止空指针操作
if (rst.wasNull()){
out.println("对不起!数据库无此记录");
return;
}
if(rst.next()){。。。。。}
执行时候系统又说if (rst.wasNull())这句话是空指针操作.这到底是什么问题?如何才能避免空指针的问题呢?请各位赐教!
...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
steveyue 2007-04-04
  • 打赏
  • 举报
回复
package com.cba.dbconnect;

import java.sql.*;
import com.cba.dbconnect.Connect;
public class QueryBean
{
public String param[]; /*查询条件,或者是新的记录*/

public QueryBean(){
}

public void setParam(String[] param)
{
this.param=param;
}
/*
数据库操作,应该放在try{}catch(Exception e){}finally{}处理,在try之外定义Connection、PrepraredStatement、ResultSet等
在try内实例化或者取值,catch中捕获异常,finally中释放或者关闭
编码要规范些,for/if等该加上{}的最好都加上,便于阅读!
*/
public ResultSet getResult(String sql)
{
Connection conn = null;
PreparedStatement select_stm = null;
try
{
conn=new Connect().getConnection();
select_stm=conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
if (param!=null){
for(int i=0;i<param.length;i++){
select_stm.setString(i+1,param[i]);
}
}
return select_stm.executeQuery();
}catch(Exception e){
System.out.println(e);
}finally{
if(select_stm != null){select_stm.close();}
if(conn != null){conn.close();}
}
}
}
laofei001 2007-04-04
  • 打赏
  • 举报
回复
getResult代码如下,各位帮忙看看有什么问题吗?

package com.cba.dbconnect;

import java.sql.*;
import com.cba.dbconnect.Connect;
public class QueryBean
{
public String param[]; /*查询条件,或者是新的记录*/
public ResultSet result=null;
public Connection conn;

Connect getConnection=new Connect();
public QueryBean(){
try {
conn=getConnection.getConnection();
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}

public void setParam(String[] param)
{
this.param=param;
}

/*获取查询结果*/
public ResultSet getResult(String sql)
{
try
{
PreparedStatement select_stm=conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
if (param!=null)
for(int i=0;i<param.length;i++)
select_stm.setString(i+1,param[i]);
result=select_stm.executeQuery();
}catch(Exception e){System.out.println(e);}
return result;
}


}
steveyue 2007-04-04
  • 打赏
  • 举报
回复
你的重点更应该放到select.getResult("select * from CustomInfo where id="+id); 上。
确保这条语句执行完成之后能得到ResultSet,这样后面使用next()方法时才是正确的,而且应该加上异常处理。
vdragon 2007-04-04
  • 打赏
  • 举报
回复
rst.wasNull()还是对rst这个对象进行操作。如果是null就一定会抛出一个NullPointerException
laofei001 2007-04-04
  • 打赏
  • 举报
回复
好的,我试试,这两句话有什么区别呢
vdragon 2007-04-04
  • 打赏
  • 举报
回复

if (rst.wasNull())
改成
if (rst == null)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧