Exemplo de tipos de dados espaciais
Esse aplicativo de exemplo Microsoft JDBC Driver para SQL Server demonstra como criar, inserir e recuperar tipos de Dados Espaciais (Geometria e Geografia).
O arquivo de código desta amostra chama-se SpatialDataTypes.java e pode ser encontrado no seguinte local:
\<installation directory>\sqljdbc_<version>\<language>\samples\datatypes
Requisitos
Para executar este aplicativo de exemplo, é necessário definir o classpath para incluir o arquivo mssql-jdbc.jar. Para obter mais informações sobre como definir o caminho de classe, confira Como usar o JDBC Driver.
Observação
O Microsoft JDBC Driver para SQL Server fornece os arquivos de biblioteca de classes mssql-jdbc a serem usados de acordo com suas configurações preferenciais do JRE (Java Runtime Environment). Para saber mais sobre qual arquivo JAR escolher, confira os requisitos do sistema para o JDBC Driver.
Exemplo
No exemplo a seguir, o código de exemplo cria uma tabela chamada SpatialDataTypesTable_JDBC_Sample que contém as colunas 'Geometry' e 'Geography'.
Primeiro o exemplo cria objetos 'Geometry' e 'Geography' de um WKT (Texto Bem Conhecido) que representa um PONTO. Ele usa um SQLServerPreparedStatement com uma consulta parametrizada para mapear os dados para cada coluna.
Por fim, o exemplo insere os dados na tabela e os recupera. Os dados são exibidos na forma de WKT.
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)");
}
}