대규모 데이터 읽기 샘플Reading large data sample

다운로드JDBC 드라이버 다운로드DownloadDownload JDBC Driver

SQL Server용 Microsoft JDBC DriverMicrosoft JDBC Driver for SQL Server 샘플 애플리케이션은 getCharacterStream 메서드를 사용하여 SQL ServerSQL Server 데이터베이스에서 큰 단일 열 값을 검색하는 방법을 보여 줍니다.This SQL Server용 Microsoft JDBC DriverMicrosoft JDBC Driver for SQL Server sample application demonstrates how to retrieve a large single-column value from a SQL ServerSQL Server database by using the getCharacterStream method.

이 샘플의 코드 파일 이름은 ReadLargeData.java이며 다음 위치에 있습니다.The code file for this sample is named ReadLargeData.java, and it can be found in the following location:

\<installation directory>\sqljdbc_<version>\<language>\samples\adaptive

요구 사항Requirements

이 샘플 애플리케이션을 실행하려면 AdventureWorksAdventureWorks 샘플 데이터베이스에 대한 액세스 권한이 필요합니다.To run this sample application, you'll need access to the AdventureWorksAdventureWorks sample database. 또한 mssql-jdbc jar 파일을 포함하도록 클래스 경로를 설정해야 합니다.You must also set the classpath to include the mssql-jdbc jar file. 클래스 경로를 설정하는 방법에 대한 자세한 내용은 JDBC 드라이버 사용을 참조하세요.For more information about how to set the classpath, see Using the JDBC Driver.

注意

SQL Server용 Microsoft JDBC DriverMicrosoft JDBC Driver for SQL Server는 기본 설정된 JRE(Java Runtime Environment)에 따라 사용할 수 있는 mssql-jdbc 클래스 라이브러리 파일을 제공합니다.The SQL Server용 Microsoft JDBC DriverMicrosoft JDBC Driver for SQL Server provides mssql-jdbc class library files to be used depending on your preferred Java Runtime Environment (JRE) settings. 선택할 JAR 파일에 대한 자세한 내용은 System Requirements for the JDBC Driver(JDBC Driver 시스템 요구 사항)를 참조하세요.For more information about which JAR file to choose, see System Requirements for the JDBC Driver.

예제Example

다음 예제의 샘플 코드에서는 AdventureWorksAdventureWorks 데이터베이스에 연결합니다.In the following example, the sample code makes a connection to the AdventureWorksAdventureWorks database. 그런 다음 샘플 데이터를 만들고 매개 변수가 있는 쿼리를 사용하여 Production.Document 테이블을 업데이트합니다.Next, the sample code creates sample data and updates the Production.Document table by using a parameterized query.

또한 이 샘플 코드는 SQLServerStatement 클래스의 getResponseBuffering 메서드를 사용하여 적응 버퍼링 모드를 가져오는 방법도 보여 줍니다.In addition, the sample code demonstrates how to get the adaptive buffering mode by using the getResponseBuffering method of the SQLServerStatement class. JDBC 드라이버 버전 2.0 릴리스 이상에서는 기본적으로 responseBuffering 연결 속성이 "adaptive"로 설정됩니다.Note that starting with the JDBC driver version 2.0 release, the responseBuffering connection property is set to "adaptive" by default.

그런 다음 SQLServerStatement 개체와 함께 SQL 문을 사용하여 SQL 문을 실행하고 반환되는 데이터를 SQLServerResultSet 개체에 배치합니다.Then, using an SQL statement with the SQLServerStatement object, the sample code runs the SQL statement and places the data that it returns into a SQLServerResultSet object.

끝으로 샘플 코드는 결과 집합에 있는 데이터 행을 반복하며, getCharacterStream 메서드를 사용하여 일부 데이터에 액세스합니다.Finally, the sample code iterates through the rows of data that are in the result set, and uses the getCharacterStream method to access some of the 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();
        }
    }
}

참고 항목See also

대규모 데이터 작업Working with large data