【问题标题】:Java JDBC driver and TYPE_FORWARD_ONLYJava JDBC 驱动程序和 TYPE_FORWARD_ONLY
【发布时间】:2009-02-27 15:30:51
【问题描述】:

如何确定 JDBC 驱动程序是否为 TYPE_FORWARD_ONLY?在我的程序中,用户配置到数据库的连接参数,他可以在类路径中使用任何 JDBC 驱动程序。在执行任何语句之前,我想知道驱动程序是否为TYPE_FORWARD_ONLY。这可能吗?

【问题讨论】:

    标签: java jdbc


    【解决方案1】:

    DatabaseMetaData 有一个方法 supportsResultSetType(int type) 可以用来检查 ResultSet 是否支持TYPE_FORWARD_ONLY

    【讨论】:

      【解决方案2】:

      按结果集的querying the type。例如:

      Statement stmt = con.createStatement(
       ResultSet.TYPE_FORWARD_ONLY,
       ResultSet.CONCUR_UPDATABLE
      );
      ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
      System.out.println(
       "Is Type Forward Only: " + 
       (rs.getType() == ResultSet.TYPE_FORWARD_ONLY)
      );
      

      【讨论】:

      • 如果 ResultSet 不支持 TYPE_FORWARD_ONLY,这不会抛出 SQLFeatureNotSupportedException 吗?
      【解决方案3】:

      有不支持滚动的驱动程序?你能举个例子吗?当您尝试创建 SCROLL_SENSITIVE 的 Statement/ResultSet 然后询问类型时,这样的驱动程序会返回什么?像这样:

      Connection con = ...;
      Statement statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ...);
      System.out.println(statement.getResultSetType());
      

      【讨论】:

      【解决方案4】:

      您可以从驱动程序中获取 DriverPropertyInfo,尽管我找不到描述驱动程序必须返回的内容的特定 jdbc 规范。 This reference 可能还有更多。

      【讨论】:

        猜你喜欢
        • 2012-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-23
        • 2013-02-17
        • 1970-01-01
        • 2013-08-12
        相关资源
        最近更新 更多