Beispiel für räumliche Datentypen

JDBC-Treiber herunterladen

Diese Microsoft JDBC-Treiber für SQL Server-Beispielanwendung veranschaulicht, wie räumliche Datentypen („Geometry“ und „Geography“) erstellt, eingefügt und abgerufen werden.

Die Codedatei für dieses Beispiel heißt „SpatialDataTypes.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. Weitere Informationen zum Festlegen des Klassenpfads finden Sie unter mit dem JDBC-Treiber.

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 Beispiel erstellt der Beispielcode eine Tabelle mit dem Namen „SpatialDataTypesTable_JDBC_Sample“, die die Spalten „Geometry“ und „Geography“ enthält.

Im Beispiel werden zunächst die Objekte „Geometry“ und „Geography“ aus einem WKT (Well-Known-Text) erstellt, der einen Punkt darstellt. Dabei wird eine SQLServerPreparedStatement-Klasse mit einer parametrisierten Abfrage verwendet, um die Daten den einzelnen Spalten zuzuordnen.

Abschließend fügt das Beispiel die Daten in die Tabelle ein und ruft sie ab. Die Daten werden im WKT-Format angezeigt.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.Geography;
import com.microsoft.sqlserver.jdbc.Geometry;
import com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement;
import com.microsoft.sqlserver.jdbc.SQLServerResultSet;

public class SpatialDataTypes {

    private static String tableName = "SpatialDataTypesTable_JDBC_Sample";

    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>";
        // Establish the connection.
        try (Connection con = DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();) {
            dropAndCreateTable(stmt);

            // TODO: Implement Sample code
            String geoWKT = "POINT(3 40 5 6)";
            Geometry geomWKT = Geometry.STGeomFromText(geoWKT, 0);
            Geography geogWKT = Geography.STGeomFromText(geoWKT, 4326);

            try (SQLServerPreparedStatement pstmt = (SQLServerPreparedStatement) con
                    .prepareStatement("insert into " + tableName + " values (?, ?)");) {
                pstmt.setGeometry(1, geomWKT);
                pstmt.setGeography(2, geogWKT);
                pstmt.execute();

                SQLServerResultSet rs = (SQLServerResultSet) stmt.executeQuery("select * from " + tableName);
                rs.next();

                System.out.println("Geometry data: " + rs.getGeometry(1));
                System.out.println("Geography data: " + rs.getGeography(2));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

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

        stmt.executeUpdate("Create table " + tableName + " (c1 geometry, c2 geography)");
    }
}

Weitere Informationen

Arbeiten mit Datentypen (JDBC)