请看看我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) 展开
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) 展开
3个回答
展开全部
你上面只设了1,2,4的值,唯独3没设值,取的时候当然是空的.
这是该接口方法的签名:
int getInt(int parameterIndex)
throws SQLException
以 Java 编程语言中 int 值的形式获取指定的 JDBC INTEGER 参数的值
这是该接口方法的签名:
int getInt(int parameterIndex)
throws SQLException
以 Java 编程语言中 int 值的形式获取指定的 JDBC INTEGER 参数的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去掉“cstmt.setInt(4, 6); ”这一行试试~:)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
空指针异常,肯定哪个没取到或指向空了,仔细看看吧~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询