[英]execute multiple queries No current row in the ResultSet issue
我試圖從另一個表的列中獲取一個值,並將其傳遞給SP過程,但是我得到了
ResultSet中沒有當前行
在cs.setString(1, rsS.getString("ID")); // p_ID
cs.setString(1, rsS.getString("ID")); // p_ID
正確的方法是什么
//get value P_ID based on itemnumber
PreparedStatement preparedStatement = null;
String sqli = "select ID,[ItemNumber] from [file].[Item] where [ItemNumber] =?";
preparedStatement = con.prepareStatement(sqli);
preparedStatement.setString(1, itemcard);
ResultSet rsS = preparedStatement.executeQuery();
while (rsS.next())
System.out.println(rsS.getString("ID"));
//for updating trash
CallableStatement cs = null;
String queryundo = "{ call [file].[usp_trashItem](?,?,?,?)} ";
cs = con.prepareCall(queryundo);
cs.setString(1, rsS.getString("ID")); // p_ID
cs.setString(2, "U"); //p_Action(U for untrash T for Trash)
cs.setInt(3, 1); //p_Quantity
cs.setString(4, doerTicket); //p_DoerTicket
cs.executeQuery();
con.close();
}
}
並與此
PreparedStatement preparedStatement = null;
String sqli = "select ID,[ItemNumber] from [file].[Item] where [ItemNumber] =?";
preparedStatement = con.prepareStatement(sqli);
preparedStatement.setString(1, itemcard);
ResultSet rsS = preparedStatement.executeQuery();
while (rsS.next()) {
System.out.println(rsS.getString("ID"));
//for updating trash
CallableStatement cs = null;
String queryundo = "{ call [file].[usp_trashItem](?,?,?,?)} ";
cs = con.prepareCall(queryundo);
cs.setString(1, rsS.getString("ID")); // p_ID
cs.setString(2, "U"); //p_Action(U for untrash T for Trash)
cs.setInt(3, 1); //p_Quantity
cs.setString(4, doerTicket); //p_DoerTicket
cs.executeQuery();
con.close();
}
}
}
我得到
executeQuery方法必須返回結果集
while (rsS.next())
沒有大括號,因此它將僅在System.out.println(rsS.getString("ID"));
上循環System.out.println(rsS.getString("ID"));
。
在循環外部(在rsS.next()
返回false
), ResulSet
將為空。
同樣, cs
可能不保存查詢,而是保留其他某種類型的語句,因此您不能使用cs.executeQuery()
因為如果不返回結果,它將給您一個錯誤。
嘗試使用cs.executeUpdate()
或cs.execute()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.