Freigeben über


Standarddatentypen – Beispiel

JDBC-Treiber herunterladen

Diese Beispielanwendung für den Microsoft JDBC-Treiber für SQL Server veranschaulicht, wie Werte von SQL Server-Standarddatentypen mithilfe von Abrufmethoden für Resultsets abgerufen und diese Werte mithilfe von Updatemethoden für Resultsets aktualisiert werden.

Die Codedatei für dieses Beispiel heißt „BasicDataTypes.java“ und befindet sich im folgenden Pfad:

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

Requirements (Anforderungen)

Wenn Sie diese Beispielanwendung ausführen möchten, müssen Sie die Datei „mssql-jdbc.jar“ in den Klassenpfad aufnehmen. Darüber hinaus benötigen Sie Zugriff auf die AdventureWorks2022-Beispieldatenbank. Weitere Informationen zum Festlegen des Klassenpfads finden Sie unter mit dem JDBC-Treiber.

Im Beispiel wird die erforderliche Tabelle erstellt, und es werden Beispieldaten in die AdventureWorks2022-Beispieldatenbank eingefügt:

Hinweis

Der Microsoft JDBC-Treiber für SQL Server enthält die Klassenbibliotheksdateien „mssql-jdbc“ für die jeweilige Verwendung mit Ihren bevorzugten JRE-Einstellungen (Java Runtime Environment). Weitere Informationen zum Auswählen der richtigen JAR-Datei finden Sie unter Systemanforderungen für den JDBC-Treiber.

Beispiel

Im folgenden Beispielcode wird eine Verbindung mit der AdventureWorks2022-Datenbank hergestellt. Anschließend wird eine einzelne Datenzeile aus der DataTypesTable-Testtabelle abgerufen. Danach wird die benutzerdefinierte displayRow-Methode aufgerufen, um alle im Resultset enthaltenen Daten mithilfe der verschiedenen get<Typ>-Methoden der SQLServerResultSet-Klasse anzuzeigen.

Anschließend werden die im Resultset enthaltenen Daten mithilfe der verschiedenen update<Typ>-Methoden der SQLServerResultSet-Klasse aktualisiert. Daraufhin wird die updateRow-Methode aufgerufen, um die Daten in der Datenbank zu speichern.

Schließlich werden die im Resultset enthaltenen Daten aktualisiert, und die benutzerdefinierte displayRow-Methode wird erneut aufgerufen, um die aktualisierten Daten im Resultset anzuzeigen.

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;

import com.microsoft.sqlserver.jdbc.SQLServerResultSet;

import microsoft.sql.DateTimeOffset;


public class DatatypesTest {
    private static final String tableName = "DataTypesTable";

    public static void main(String[] args) {

        // Create a variable for the connection string.
        String connectionUrl = "jdbc:sqlserver://<server>:<port>;encrypt=true;databaseName=<database>;user=<user>;password=<password>";

        try (Connection con = DriverManager.getConnection(connectionUrl);
                Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);) {

            dropAndCreateTable(stmt);
            insertOriginalData(con);

            String SQL = "SELECT * FROM " + tableName;
            ResultSet rs = stmt.executeQuery(SQL);
            rs.next();
            displayRow("ORIGINAL DATA", rs);

            // Update the data in the result set.
            rs.updateString(2, "B");
            rs.updateString(3, "Some updated text.");
            rs.updateBoolean(4, true);
            rs.updateDouble(5, 77.89);
            rs.updateDouble(6, 1000.01);
            long timeInMillis = System.currentTimeMillis();
            Timestamp ts = new Timestamp(timeInMillis);
            rs.updateTimestamp(7, ts);
            rs.updateDate(8, new Date(timeInMillis));
            rs.updateTime(9, new Time(timeInMillis));
            rs.updateTimestamp(10, ts);
            rs.updateTimestamp(11, ts);
            rs.updateObject(12, 987654321L, microsoft.sql.Types.SQL_VARIANT);

            // -480 indicates GMT - 8:00 hrs
            ((SQLServerResultSet) rs).updateDateTimeOffset(11, DateTimeOffset.valueOf(ts, -480));

            rs.updateRow();

            // Get the updated data from the database and display it.
            rs = stmt.executeQuery(SQL);
            rs.next();
            displayRow("UPDATED DATA", rs);
        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static void displayRow(String title, ResultSet rs) throws SQLException {
        System.out.println(title);
        System.out.println(rs.getInt(1) + " , " + // SQL integer type
                rs.getString(2) + " , " + // SQL char type
                rs.getString(3) + " , " + // SQL varchar type
                rs.getBoolean(4) + " , " + // SQL bit type
                rs.getDouble(5) + " , " + // SQL decimal type
                rs.getDouble(6) + " , " + // SQL money type
                rs.getTimestamp(7) + " , " + // SQL datetime type
                rs.getDate(8) + " , " + // SQL date type
                rs.getTime(9) + " , " + // SQL time type
                rs.getTimestamp(10) + " , " + // SQL datetime2 type
                ((SQLServerResultSet) rs).getDateTimeOffset(11) + " , " + // SQL datetimeoffset type
                rs.getObject(12)); // SQL sqlvariant type
        System.out.println();
    }

    private static void dropAndCreateTable(Statement stmt) throws SQLException {
        stmt.executeUpdate("if object_id('" + tableName + "','U') is not null" + " drop table " + tableName);

        String sql = "create table " + tableName + " (" + "c1 int, " + "c2 char(20), " + "c3 varchar(20), " + "c4 bit, "
                + "c5 decimal(10,5), " + "c6 money, " + "c7 datetime, " + "c8 date, " + "c9 time(7), "
                + "c10 datetime2(7), " + "c11 datetimeoffset(7), " + "c12 sql_variant" + ");";

        stmt.execute(sql);
    }

    private static void insertOriginalData(Connection con) throws SQLException {
        String sql = "insert into " + tableName + " values( " + "?,?,?,?,?,?,?,?,?,?,?,?" + ")";
        try (PreparedStatement pstmt = con.prepareStatement(sql)) {
            pstmt.setObject(1, 100);
            pstmt.setObject(2, "original text");
            pstmt.setObject(3, "original text");
            pstmt.setObject(4, false);
            pstmt.setObject(5, 12.34);
            pstmt.setObject(6, 56.78);
            pstmt.setObject(7, new java.util.Date(1453500034839L));
            pstmt.setObject(8, new java.util.Date(1453500034839L));
            pstmt.setObject(9, new java.util.Date(1453500034839L));
            pstmt.setObject(10, new java.util.Date(1453500034839L));
            pstmt.setObject(11, new java.util.Date(1453500034839L));
            pstmt.setObject(12, 123456789L, microsoft.sql.Types.SQL_VARIANT);
            pstmt.execute();
        }
    }
}

Siehe auch

Arbeiten mit Datentypen (JDBC)