对于Java和JSON来说,我是一个新手,但在使这种情况下无法正常工作时遇到了问题。我们开始:
我必须发送一个将触发2个存储过程的JSON文件。第一个SP将写入标头表,而另一个SP使用第一个SP返回的游标值多次写入明细表。
我正在按以下方式定义JSON文件,该文件可以具有任意数量的详细对象数组(出于实际目的,我仅使用2进行测试)。
我的标头SP正确写入并返回我需要写入到明细表中的游标值。问题出在我的详细信息SP上,它只写第一个数组的值,而忽略第二个数组。换句话说,代码不会遍历所有已定义的数组值。
此外,我的StackTrace也给了我两个:
调试org.springframework.web.servlet.DispatcherServlet-成功完成请求
java.sql.SQLException:游标状态无效
如何正确编写FOR子句,以使它遍历所有详细对象数组值?
谢谢您的时间!
POJO定义:
HeaderPOJO:
私人String公司;
私有字符串名称;
私人列表详细信息;
DetailPOJO:
私人String公司;
私有字符串组;
private int id;
JSON已发送: {
"company":"1",
"name":"somedude",
"detail":[
{
"company":"1",
"group":"AB",
"id":1
},
{
"company":"1",
"group":"AC",
"id":2
}
]
}
JAVA代码片段:
public int dostuff(@RequestBody dostuff savestuffH) {
ResultSet rs = null;
Connection con = null;
int cursorreturned = 0;
try
{
java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());
con = DriverManager.getConnection("WORKING CONNECTION");
Statement st = con.createStatement();
rs = st.executeQuery("call stored.procedure1(HEADER PARAMETERS)");
while(rs.next())
{
cursorreturned = rs.getInt("SP Cursor"); //THIS IS A VALUE RETURNED BY MY SP WHICH I NEED FOR MY DETAILS TABLE
}
for(DetailPOJO savestuffD:savestuffH.getDetail())
{
rs = st.executeQuery("call stored.procedure2('" + savestuffD.getCompany() + "', " + cursorreturned + ", '" + savestuffD.getGroup() + "', " + savestuffD.getid() + ")");
}
}
}