【问题标题】:How to get result from Result Set using getObject method? [duplicate]如何使用 getObject 方法从结果集中获取结果? [复制]
【发布时间】: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 版本。
  • 说真的,这又是您之前问题的重复,稍微改写了一下。我需要每天都关闭它们吗?

标签: java jdbc resultset


【解决方案1】:

@Mia 以下两个答案,我认为其中一个应该有效-

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 = myFirstCs.getObject(2);
            System.out.print("Section Name: "+name);
    }

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 = myFirstCs.getResultSet();
        while (myRs.next()) // Retrieve result set rows
        {                  
            name=myRs.getString(1);
            System.out.print("Section Name: "+name);
        }
        myRs.close(); 

【讨论】:

  • 它给了我一个错误Integer cannot be cast to java.sql.ResultSet
  • @Mia Legaspi 我已经用两个代码更新了答案。试试这些代码。
  • 它给了我一个NullPointerException
猜你喜欢
  • 2013-07-07
  • 2016-05-01
  • 1970-01-01
  • 2014-11-03
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多