Membaca sampel data besar
Aplikasi sampel Microsoft JDBC Driver for SQL Server ini menunjukkan cara mengambil nilai kolom tunggal besar dari database SQL Server dengan menggunakan metode getCharacterStream .
File kode untuk sampel ini diberi nama ReadLargeData.java, dan dapat ditemukan di lokasi berikut:
\<installation directory>\sqljdbc_<version>\<language>\samples\adaptive
Persyaratan
Untuk menjalankan aplikasi sampel ini, Anda memerlukan akses ke database sampel AdventureWorks2022. Anda juga harus mengatur classpath untuk menyertakan file jar mssql-jdbc. Untuk informasi selengkapnya tentang cara mengatur classpath, lihat Menggunakan Driver JDBC.
Catatan
Driver Microsoft JDBC untuk SQL Server menyediakan file pustaka kelas mssql-jdbc untuk digunakan tergantung pada pengaturan Java Runtime Environment (JRE) pilihan Anda. Untuk informasi selengkapnya tentang file JAR mana yang akan dipilih, lihat Persyaratan Sistem untuk Driver JDBC.
Contoh
Dalam contoh berikut, kode sampel membuat koneksi ke database AdventureWorks2022. Selanjutnya, kode sampel membuat data sampel dan memperbarui tabel Production.Document dengan menggunakan kueri berparameter.
Selain itu, kode sampel menunjukkan cara mendapatkan mode buffering adaptif dengan menggunakan metode getResponseBuffering kelas SQLServerStatement . Perhatikan bahwa dimulai dengan rilis driver JDBC versi 2.0, properti koneksi responseBuffering diatur ke "adaptif" secara default.
Kemudian, menggunakan pernyataan SQL dengan objek SQLServerStatement , kode sampel menjalankan pernyataan SQL dan menempatkan data yang dikembalikannya ke objek SQLServerResultSet .
Terakhir, kode sampel berulang melalui baris data yang ada dalam tataan hasil, dan menggunakan metode getCharacterStream untuk mengakses beberapa data.
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerStatement;
public class ReadLargeData {
public static void main(String[] args) {
// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://<server>:<port>;databaseName=AdventureWorks;user=<user>;password=<password>";
// Create test data as an example.
StringBuffer buffer = new StringBuffer(4000);
for (int i = 0; i < 4000; i++)
buffer.append((char) ('A'));
try (Connection con = DriverManager.getConnection(connectionUrl);
Statement stmt = con.createStatement();
PreparedStatement pstmt = con.prepareStatement("UPDATE Production.Document SET DocumentSummary = ? WHERE (DocumentID = 1)");) {
pstmt.setString(1, buffer.toString());
pstmt.executeUpdate();
// In adaptive mode, the application does not have to use a server cursor
// to avoid OutOfMemoryError when the SELECT statement produces very large
// results.
// Create and execute an SQL statement that returns some data.
String SQL = "SELECT Title, DocumentSummary FROM Production.Document";
// Display the response buffering mode.
SQLServerStatement SQLstmt = (SQLServerStatement) stmt;
System.out.println("Response buffering mode is: " + SQLstmt.getResponseBuffering());
SQLstmt.close();
// Get the updated data from the database and display it.
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
Reader reader = rs.getCharacterStream(2);
if (reader != null) {
char output[] = new char[40];
while (reader.read(output) != -1) {
// Do something with the chunk of the data that was
// read.
}
System.out.println(rs.getString(1) + " has been accessed for the summary column.");
// Close the stream.
reader.close();
}
}
}
// Handle any errors that may have occurred.
catch (SQLException | IOException e) {
e.printStackTrace();
}
}
}