Cara yang biasa digunakan untuk menyetel ukuran pengambilan baris adalah:
- Melalui
java.sql.Connection
kelas implementasi vendor metode khusus (mis.OracleConnection.setDefaultRowPrefetch
) - Melalui
java.sql.Statement.setFetchSize(int)
:memberikan petunjuk kepada driver tentang ukuran pengambilan baris untuk semuaResultSets
diperoleh dariStatement
ini . Metode ini diwarisi olehPreparedStatement
danCallableStatement
. Sebagian besar driver JDBC mendukungnya. - Melalui
java.sql.ResultSet.setFetchSize(int)
:memberikan petunjuk kepada pengemudi tentang ukuran pengambilan baris untuk semuaResultSet
. ini .
Driver MS SQL Server JDBC tidak mendukung salah satu cara berikut:
- Driver MSSQL tidak memiliki metode seperti itu.
- Sayangnya, sementara sebagian besar driver menghormati petunjuk tersebut, driver MSSQL tidak. Jadi tidak berguna bagi Anda. Lihat Apa sebenarnya metode Statement.setFetchSize(nSize) lakukan di driver SQL Server JDBC?
- Masalah yang sama dengan
Statement
.
Secara default ia mengambil semua baris dari database kecuali Anda menentukan jenis kursor di driver JDBC. Driver MSSQL tidak dapat secara langsung mengontrol ukuran pengambilan menggunakan metode biasa.
Solusi:
- Berikan
Statement
your keSQLServerStatement
dan gunakan metodesetMaxRows(int)
. Mengapa mereka tidak menerapkan ini dalam metode standar Steve Ballmer hanya tahu;^) - Buat driver Anda dengan jenis kursor. Ukuran pengambilan default untuk kursor adalah 1. Setel
Connection
properti stringselectMethod=cursor
. Atau, Anda dapat membuatStatement
dengancom.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY
scrollability untuk akses hanya-maju, akses baca-saja, dan kemudian gunakansetFetchSize
metode untuk menyetel kinerja. http://technet.microsoft.com/en -us/library/aa342344%28SQL.90%29.aspx - Gunakan SQL (eksklusif) untuk membatasi jumlah baris yang dikembalikan (tidak sama dengan menyetel ukuran pengambilan ):
SET ROWCOUNT
atauSELECT TOP N
- Beralih ke sumber terbuka jTDS driver, khusus dibuat untuk mengatasi masalah driver SQL Server. Ini adalah pengemudi yang unggul.