【发布时间】:2016-07-13 23:14:17
【问题描述】:
我正在尝试获取我的结果集的结果,我将我的第二个参数注册为INTEGER。根据我阅读的内容,我应该先获取对象,然后再使用结果集检索它。
代码
try (Connection myConn = DBUtil.connect();
CallableStatement myFirstCs = myConn.prepareCall("{call getSECTION_NAME(?,?)}"))
{
myFirstCs.setString(1, searchSection);
myFirstCs.registerOutParameter(2, Types.INTEGER);
myFirstCs.executeUpdate();
String name = null;
System.out.println(myFirstCs.getObject(2));
ResultSet myRs = null;
myRs = (java.sql.ResultSet)myFirstCs.getObject(2);
while (myRs.next()) // Retrieve result set rows
{
name=myRs.getString(1);
System.out.print("Section Name: "+name);
}
myRs.close();
这是检索结果集的正确方法吗?我尝试使用资源尝试此方法。我在这里遗漏了一些东西ResultSet myRs = myFirstCs.getObject(2, type) 不知道我会在我的第二个参数中放什么?
仅示例
try (ResultSet myRs = myFirstCs.getObject(2, type))//What should I put here?
{
while (myRs.next())
{
name = myRs.getString(1);
System.out.print("Section Name: "+name);
}//end of while
}
欢迎评论。任何帮助将不胜感激。谢谢。
【问题讨论】:
-
myFirstCs.getInt(2)没有工作?? -
第二个参数将是你可以从 oracle doc 中检查的 sqlType...docs.oracle.com/javase/7/docs/api/java/sql/… sqlType - 由 java.sql.Types 定义的 JDBC 类型代码。如果参数是 JDBC 类型 NUMERIC 或 DECIMAL,则应使用接受比例值的 registerOutParameter 版本。
-
说真的,这又是您之前问题的重复,稍微改写了一下。我需要每天都关闭它们吗?