请看看我java调用存储过程的代码有什么问题

importjava.sql.*;publicclassTestCallProcedure{/***@paramargs*/publicstaticvoidmain(St... import java.sql.*;
public class TestCallProcedure {

/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
CallableStatement cstmt=conn.prepareCall("{call p(?,?,?,?)}");
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4, Types.INTEGER);
cstmt.setInt(1, 3);
cstmt.setInt(2, 4);
cstmt.setInt(4, 6);

System.out.println(cstmt.getInt(3));//有问题,但不知道是什么问题
System.out.println(cstmt.getInt(4));
cstmt.close();
conn.close();
}

}
错误是:
Exception in thread "main" java.lang.NullPointerException
at oracle.jdbc.driver.OracleCallableStatement.getInt(OracleCallableStatement.java:1012)
at TestCallProcedure.main(TestCallProcedure.java:18)
展开
 我来答
IdeaPocket
2008-11-26 · TA获得超过403个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:74.3万
展开全部
你上面只设了1,2,4的值,唯独3没设值,取的时候当然是空的.
这是该接口方法的签名:
int getInt(int parameterIndex)
throws SQLException
以 Java 编程语言中 int 值的形式获取指定的 JDBC INTEGER 参数的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxheyu
2008-11-26
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
去掉“cstmt.setInt(4, 6); ”这一行试试~:)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏鸟_青岚
2008-12-02 · TA获得超过752个赞
知道小有建树答主
回答量:548
采纳率:0%
帮助的人:527万
展开全部
空指针异常,肯定哪个没取到或指向空了,仔细看看吧~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式