Lectura de ejemplo de datos grandesReading large data sample

DescargarDescargar controlador para JDBCDownloadDownload JDBC Driver

En esta aplicación de ejemplo de Microsoft JDBC Driver para SQL ServerMicrosoft JDBC Driver for SQL Server se muestra cómo recuperar un valor grande de una sola columna desde una base de datos de SQL ServerSQL Server mediante el método getCharacterStream.This Microsoft JDBC Driver para SQL ServerMicrosoft 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.

El archivo de código para este ejemplo se denomina ReadLargeData.java y se encuentra en la siguiente ubicación: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

RequisitosRequirements

Para ejecutar esta aplicación de ejemplo, deberá tener acceso a la base de datos de ejemplo AdventureWorksAdventureWorks.To run this sample application, you'll need access to the AdventureWorksAdventureWorks sample database. También deberá establecer la ruta de clase para incluir el archivo jar mssql-jdbc.You must also set the classpath to include the mssql-jdbc jar file. Para obtener más información sobre cómo establecer la ruta de acceso de clase, consulte Usar el controlador JDBC.For more information about how to set the classpath, see Using the JDBC Driver.

Nota

Microsoft JDBC Driver para SQL ServerMicrosoft JDBC Driver for SQL Server proporciona los archivos de biblioteca de clases mssql-jdbc que se usan según la configuración preferida de Java Runtime Environment (JRE).The Microsoft JDBC Driver para SQL ServerMicrosoft JDBC Driver for SQL Server provides mssql-jdbc class library files to be used depending on your preferred Java Runtime Environment (JRE) settings. Para obtener más información acerca del archivo JAR que se debe seleccionar, consulte Requisitos del sistema para el controlador JDBC.For more information about which JAR file to choose, see System Requirements for the JDBC Driver.

EjemploExample

En el siguiente ejemplo, el código realiza una conexión a la base de datos AdventureWorksAdventureWorks.In the following example, the sample code makes a connection to the AdventureWorksAdventureWorks database. Luego, el código muestra crea los datos del ejemplo y actualiza la tabla Production.Document con una consulta con parámetros.Next, the sample code creates sample data and updates the Production.Document table by using a parameterized query.

Además, en el código se indica cómo establecer el modo de almacenamiento en búfer adaptable con el método getResponseBuffering de la clase SQLServerStatement.In addition, the sample code demonstrates how to get the adaptive buffering mode by using the getResponseBuffering method of the SQLServerStatement class. Tenga en cuenta que desde la publicación de la versión 2.0 del controlador JDBC, la propiedad de conexión responseBuffering se establece en "adaptive" de manera predeterminada.Note that starting with the JDBC driver version 2.0 release, the responseBuffering connection property is set to "adaptive" by default.

Después, con una instrucción SQL con el objeto SQLServerStatement, el código ejecuta la instrucción SQL y coloca los datos que devuelve en un objeto 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.

Por último, el código itera por las filas de datos que se encuentran en el conjunto de resultados y usa el método getCharacterStream para tener acceso a algunos de los datos.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();
        }
    }
}

Consulte tambiénSee also

Trabajo con datos grandesWorking with large data