当前位置: 首页 > 面试题库 >

使用JDBC驱动程序在SQL Server中设置默认行预取

汪安宁
2023-03-14
问题内容

我有一个应用程序,我想在其中定义要为连接预取的默认行数,同时用于Oracle和SQL
Server驱动程序。Oracle驱动程序具有一个OracleConnection接口,该接口提供了setDefaultRowPrefetch执行该操作的方法,但是我没有找到与SQL
Server驱动程序等效的任何东西。

有没有一种方法可以使用SQL Server JDBC驱动程序为连接定义默认的行预取​​?


问题答案:

设置行提取大小的常用方法是:

  1. 通过 java.sql.Connection 供应商实施类的 自定义方法 (例如OracleConnection.setDefaultRowPrefetch
  2. Via java.sql.Statement.setFetchSize(int) :向驱动程序提示ResultSets从此获取的所有数据的行读取大小Statement。此方法由PreparedStatement和继承CallableStatement。大多数JDBC驱动程序都支持它。
  3. Via java.sql.ResultSet.setFetchSize(int) :向驱动程序提示所有这一切的行读取大小ResultSet

MS SQL Server JDBC驱动程序不支持以下任何一种方式:

  1. MSSQL驱动程序没有这种方法。
  2. 不幸的是,尽管大多数驱动程序都遵循提示,但MSSQL驱动程序却不这样做。因此对您没有用。请参阅Statement.setFetchSize(nSize)方法在SQL Server JDBC驱动程序中的实际作用是什么?
  3. 与相同的问题Statement

默认情况下,除非您在JDBC驱动程序中指定了游标类型,否则它将从数据库检索 所有 行。MSSQL驱动程序不能使用常规方法直接控制获取大小。

解决方案:

  • 投下你StatementSQLServerStatement和使用的方法setMaxRows(int)。为什么他们没有在史蒂夫·鲍尔默只知道的标准方法中实现这一点; ^)
  • 用游标类型创建驱动程序。游标的默认获取大小为1。设置Connectionstring属性selectMethod=cursor。或者,您可以创建Statement具有com.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY滚动性的for只读和只读访问,然后使用该setFetchSize方法来调整性能。 http://technet.microsoft.com/zh-cn/library/aa342344%28SQL.90%29.aspx
  • 使用(专有)SQL限制返回的行数( 与设置访存大小不同 ):SET ROWCOUNTSELECT TOP N
  • 切换到开源 jTDS 驱动程序, 驱动程序是专为克服SQL Server驱动程序问题而设计的。这是一位出色的车手。


 类似资料:
  • 如何将Crystal Reports与ucanaccess jdbc驱动程序一起使用?我得到“未找到驱动程序”错误。我将ucanaccess jar文件复制到程序文件(C:\program files(x86)\Business objects\common\3.5\java)中的业务对象,编辑了crconfig.xml文件,并且已经在Crystal Reports中配置了JDBC(JNDI)。M

  • 问题内容: 我无法在Selenium Webdriver 3中为Firefox设置默认配置文件,因为该类中没有此类构造函数。 Java代码中的编译错误: Java代码 Maven 依赖项: Selenium 3.14.0 Firefox版本: Firefox 62.0.2版 问题答案: 当您按照FirefoxDriver类使用 Selenium 3.14.0时 ,有效的构造函数为: 因此,按照您的

  • 我已经检查了这个问题的所有消息,但它是一样的,它不起作用。我必须用java连接到sql服务器2008数据库,我已经添加了sqljdbc4.jar但什么也没有。 我做的不好,如果你还需要什么,请告诉我。 我收到这条消息: Java语言sql。SQLException:未找到适合jdbc的驱动程序:sqlserver://xxx.xxx.xxx.xxx:1433;databaseName=ccis;用

  • 当我将mysql jdbc驱动程序复制到JDK的\jre\lib\ext时,它执行得非常好。现在,我想通过指定环境变量的类路径来使用jdbc。但是,这样做之后,我的程序抛出异常: “java.sql.SQLException:找不到适合jdbc的驱动程序:mysql://localhost/books" 如何设置类路径?

  • 有一个在java 6(1.6.021)上构建和运行的遗留web应用程序,该应用程序部署在CentOS虚拟机上的Apache tomcat 6.0.29上,该虚拟机连接到两个数据库——一个MySQL数据库(本地)和一个SQL Server 2000数据库(远程)。多年来一切都很好,直到有一天,某个登录到SQL Server的用户收到一个登录超时错误。以前,这是间歇性的,因为登录时确实会出现超时,但现

  • 本文向大家介绍vagrant 在Vagrantfile中设置默认提供程序,包括了vagrant 在Vagrantfile中设置默认提供程序的使用技巧和注意事项,需要的朋友参考一下 示例