Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
JDBC-stuurprogramma downloaden
Dit Microsoft JDBC-stuurprogramma voor SQL Server-voorbeeldtoepassing laat zien hoe u een grote eencellige waarde ophaalt uit een SQL Server-database door de methode getCharacterStream te gebruiken.
Het codebestand voor dit voorbeeld heeft de naam ReadLargeData.java en kan worden gevonden op de volgende locatie:
\<installation directory>\sqljdbc_<version>\<language>\samples\adaptive
Requirements
Als u deze voorbeeldtoepassing wilt uitvoeren, hebt u toegang nodig tot de voorbeelddatabase AdventureWorks2025. U moet ook het klassepad instellen om het jar-bestand mssql-jdbc op te nemen. Zie Het JDBC-stuurprogramma gebruiken voor meer informatie over het instellen van het klassepad.
Opmerking
Het Microsoft JDBC-stuurprogramma voor SQL Server biedt mssql-jdbc-klassebibliotheekbestanden die gebruikt kunnen worden, op basis van de instellingen voor de Java Runtime Environment (JRE). Zie Systeemvereisten voor het JDBC-stuurprogramma voor meer informatie over welk JAR-bestand u wilt kiezen.
Example
In het volgende voorbeeld maakt de voorbeeldcode een verbinding met de AdventureWorks2025-database. Vervolgens maakt de voorbeeldcode voorbeeldgegevens en werkt u de tabel Production.Document bij met behulp van een geparameteriseerde query.
Daarnaast laat de voorbeeldcode zien hoe u de adaptieve buffermodus kunt ophalen met behulp van de methode getResponseBuffering van de klasse SQLServerStatement . Vanaf de release van het JDBC-stuurprogramma versie 2.0 is de eigenschap responseBuffering-verbinding standaard ingesteld op 'adaptief'.
Vervolgens wordt met behulp van een SQL-instructie met het SQLServerStatement-object de SQL-instructie uitgevoerd en worden de gegevens die worden geretourneerd in een SQLServerResultSet-object geplaatst.
Ten slotte doorloopt de voorbeeldcode de rijen met gegevens die zich in de resultatenset bevinden en gebruikt de methode getCharacterStream om toegang te krijgen tot sommige gegevens.
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 a 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();
}
}
}