空间数据类型示例
此 Microsoft JDBC Driver for SQL Server 示例应用程序展示了如何创建、插入和检索空间数据类型(Geometry 和 Geography)。
此示例的代码文件名为 SpatialDataTypes.java,位于以下位置:
\<installation directory>\sqljdbc_<version>\<language>\samples\datatypes
要求
若要运行此示例应用程序,必须设置 classpath 以包含 mssql-jdbc jar 文件。 若要详细了解如何设置类路径,请参阅使用 JDBC 驱动程序。
注意
Microsoft JDBC Driver for SQL Server 提供要使用的 mssql-jdbc 类库文件,具体使用哪个文件取决于首选的 Java Runtime Environment (JRE) 设置。 有关选择哪个 JAR 文件的详细信息,请参阅 JDBC 驱动程序的系统要求。
示例
在下面的示例中,示例代码创建名为 SpatialDataTypesTable_JDBC_Sample 的表,其中包含“Geometry”和“Geography”列。
此示例先根据表示 POINT 的熟知文本 (WKT) 创建“Geometry”和“Geography”对象。 然后,它结合使用 SQLServerPreparedStatement 和参数化查询,以将数据映射到每一列。
最后,此示例将数据插入表中,并检索它。 数据以 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)");
}
}
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈