Dan*_*ira 4 java sql-server jdbc
我有一个应用程序,我想定义预取连接的默认行数,用于Oracle和SQL Server驱动程序.Oracle驱动程序有一个OracleConnection接口,它提供了setDefaultRowPrefetch执行此操作的方法,但我找不到与SQL Server驱动程序等效的任何内容.
有一种方法可以使用SQL Server JDBC驱动程序为连接定义默认行预取?
Gle*_*est 11
设置行提取大小的常用方法是:
java.sql.Connection供应商实现类自定义方法(例如OracleConnection.setDefaultRowPrefetch)java.sql.Statement.setFetchSize(int):向驱动程序提供有关ResultSets从此获取的所有行的获取大小的提示Statement.此方法由PreparedStatement和继承CallableStatement.大多数JDBC驱动程序都支持它java.sql.ResultSet.setFetchSize(int):向驱动程序提供关于所有这些的行提取大小的提示ResultSet.  MS SQL Server JDBC驱动程序不支持以下任何方式:
Statement.默认情况下,除非在JDBC驱动程序中指定游标类型,否则它将从数据库中检索所有行.MSSQL驱动程序无法使用常用方法直接控制提取大小.
解决方案:
Statement为SQLServerStatement并使用该方法setMaxRows(int).为什么他们没有在标准方法中实现这一点史蒂夫鲍尔默只知道; ^)Connection字符串属性selectMethod=cursor.或者,您可以创建Statement具有com.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY仅向前,只读访问权限的可滚动性,然后使用该setFetchSize方法来调整性能.  http://technet.microsoft.com/en-us/library/aa342344%28SQL.90%29.aspxSET ROWCOUNT或SELECT TOP N