[原創(chuàng)]Oracle Spatial新驅(qū)動(dòng)的添加記錄實(shí)例
??? --sunfruit
??? Oracle的空間數(shù)據(jù)庫的操作驅(qū)動(dòng)更新了,新的驅(qū)動(dòng)適用于Oracle8.0或以上,新驅(qū)動(dòng)在對數(shù)據(jù)庫的操作上面和原有的驅(qū)動(dòng)差別比較大,不過有一點(diǎn):使用變得簡單了
??? 建立空間數(shù)據(jù)庫和建立空間索引的步驟就略過了,那些網(wǎng)上有很多例子,而且實(shí)現(xiàn)方式上面也沒有變化,下面列出添加一條空間數(shù)據(jù)庫記錄的代碼:
import java.sql.*;
import oracle.sql.*;
import oracle.spatial.geometry.JGeometry;
/**
?* <p>Title: </p>
?*
?* <p>Description: </p>
?*
?* <p>Copyright: Copyright (c) 2006</p>
?*
?* <p>Company: </p>
?*
?* @author not attributable
?* @version 1.0
?*/
public class SdoAdd {
? public static void main(String[] args) {
??? String driver = "oracle.jdbc.driver.OracleDriver";
??? String url = "jdbc:oracle:thin:@172.16.75.200:1521:starmap";
??? String uid = "hmbst";
??? String psw = "hmbst";
??? Connection conn = null;
??? PreparedStatement ps=null;
??? try {
????? Class.forName(driver);
????? conn = DriverManager.getConnection(url, uid, psw);
?????
????? JGeometry jGeometry=new JGeometry(41884696,14377039,0);
????? STRUCT obj =jGeometry.store(jGeometry,conn);
????? String sql =
????????? "insert into POISDO values(seq_poi_id.nextval,?,?)";
????? ps = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
????? ps.clearParameters();
????? ps.setString(1, "我的家");
????? ps.setObject(2, obj);
????? // 插入點(diǎn)地物記錄
????? ps.executeUpdate();
????? conn.commit();
??? }
??? catch (Exception ex) {
????? ex.printStackTrace();
??? }
??? finally
??? {
????? if(conn!=null)
????? {
??????? try {
????????? conn.close();
??????? }
??????? catch (SQLException ex) {
????????? ex.printStackTrace();
??????? }
????? }
????? if(ps!=null)
????? {
??????? try {
????????? ps.close();
??????? }
??????? catch (SQLException ex) {
????????? ex.printStackTrace();
??????? }
????? }
??? }
? }
}
表POISDO的結(jié)構(gòu)如下
create table poi (
? id?INTEGER,
??gname?VARCHAR2(256),
??gshape?MDSYS.SDO_GEOMETRY);
posted on 2006-07-20 15:25 sunfruit 閱讀(443) 評論(0) 編輯 收藏 所屬分類: JAVA SE & EE 、數(shù)據(jù)庫