pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
rs.last();
上面的代码是用来执行select 语句的。
我现在在SQL SERVER2000中有一条存储过程,目的是插入一条记录,并将该记录的ID值返回给JAVA BEAN。我把上面的SQL换成存储过程语句,在数据库中插入成功,但返回的时候执行rs.last();发生了错误:
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NullPointerException
com.ideas.bean.ParentBean.insertRecord(ParentBean.java:255)
com.ideas.bean.editionBean.add(editionBean.java:68)
org.apache.jsp.edition.insert_jsp._jspService(insert_jsp.java:96)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
各位大侠帮帮忙吧,看看怎么改?
pstm = conn.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
rs.last();
java.lang.NullPointerException
可能你在插入的时候就出错了...所以你在查询的时候查到为空,last的时候又出Exception...
存储过程不是这么执行的吧
用CallableStatement cstmt = conn.prepareCall(procedure);
执行存储过程
老大,你的代码真的好乱...不知道你到底想要干什么,你的一个statement既执行insert,又执行query, 不出错才怪呢!
你还是先去看看怎么调用存储过程,怎么注册参数吧.
而且你的存储过程都没有调用cstmt.execute()啊.
并且,你的Sql传进来的应该是call yourproc,你执行完之后,怎么还能用那个cstmt 去做查询呢,建议你还是只在procedure中做insert,然后另外用一个statement去做查询吧.
你的ResultSet被设成了TYPE_FORWARD_ONLY 方式,即纪录集只能向前滚动,所以用rs.last()这样想后滚动的方法就出错了。
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
System.out.println( sql );
rs = stmt.executeQuery( sql ); //建立ResultSet(结果集)对象,并执行SQL语句
rs.last(); //将指标移至最后一笔记录
错误为:java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]No ResultSet set was produced.
------------------------------------------------
不是说没有产生 ResultSet么,是不是你执行的操作有问题?比如从一个插入操作或得记录集?
而且,你前面
java.lang.NullPointerException 空指针异常,有为空的对象被操作了
com.ideas.bean.ParentBean.insertRecord(ParentBean.java:255)
ParentBean.java的255行是什么?这里报错
com.ideas.bean.editionBean.add(editionBean.java:68)
editionBean.java 的68行应该是你调用ParentBean.java吧
org.apache.jsp.edition.insert_jsp._jspService(insert_jsp.java:96)
另外,sqlServer是绝对可以用存储过程返回值的,