问题描述
- java 执行SQL Server 存储过程
- 存储过程 有 2个输入参数 为 int nvarchar 类型 1个输出参数 nvarchar类型
……
String orderNo=""""; // 返回值
con=BaseDao.getConn(); //获取连接
CallableStatement cstmt=null;
try {
cstmt=con.prepareCall(""{?=call proc_createOrder(??)}"");
cstmt.setInt(2uid );
cstmt.setString(3cardNoList);
cstmt.registerOutParameter(1java.sql.Types.NVARCHAR);
cstmt.execute();
orderNo=cstmt.getString(1);
return orderNo;
} catch (SQLException e) {
e.printStackTrace();
}finally{
BaseDao.closeAll(con cstmt rs);
}
return orderNo;……
请帮忙检查下应该如何改
解决方案
这个要结合你的存储过程来看哪里有问题。
如果是运行出错,贴出
e.printStackTrace();
打印的错误信息。
解决方案二:
Exception in thread ""main"" java.lang.NullPointerException
at com.microsoft.sqlserver.jdbc.AppDTVImpl$SetValueOp.executeDefault(Unknown Source)
at com.microsoft.sqlserver.jdbc.DTV.executeOp(Unknown Source)
at com.microsoft.sqlserver.jdbc.AppDTVImpl.setValue(Unknown Source)
at com.microsoft.sqlserver.jdbc.DTV.setValue(Unknown Source)
at com.microsoft.sqlserver.jdbc.Parameter.sendByRPC(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.sendParamsByRPC(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doPrepExec(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown Source)
at com.jzlg.dao.imple.IOrdersdaoImple.addOrdersAndOrderDetail(IOrdersdaoImple.java:168)
at com.jzlg.dao.imple.IOrdersdaoImple.main(IOrdersdaoImple.java:180)
我在这个方法(addOrdersAndOrderDetail)外面写了个Main 方法验证出了以上的异常
解决方案三:
空指针异常,你的这句执行后cstmt=con.prepareCall(""{?=call proc_createOrder(??)}"")获得了CallableStatement吗?我也是新手,也许不对
解决方案四:
try catch 捕获一下异常,然后打印出来看看是怎么回事儿
解决方案五:
使用logcat捕捉每一步骤的信息,无论是正确的还是错误的
解决方案六:
拜托 各位大神不要把问题复杂化 真正问题如下
java 执行SQL Server 存储过程 存储过程 有 2个输入参数 为 int nvarchar 类型 和 1个输出参数 nvarchar类型(一共3个参数)
cstmt=con.prepareCall(""{?=call proc_createOrder(??)}""); 这句和下面的给参数赋值怎么写?