在jbulder9中加入sdo_java_040319.zip类库,也就是sdoapi类库,但在编译时仍然报oracle.sdoapi.OraSpatialManager找不到,为什么?代码如下:
// Copyright (C) Oracle Corporation 1999.        All Rights Reserved.package sample;import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
import oracle.sdoapi.OraSpatialManager;
import oracle.sdoapi.geom.*;
import oracle.sdoapi.adapter.*;
import oracle.sdoapi.sref.*;
/**
 * This sample program generates various geometries, converts them to
 * the SDO format and writes them to a database table.
 */
public class SampleNewToSDO
{
  private static String m_host = "legend";
  private static String m_port = "1521";
  private static String m_sid = "ship816";
  private static String m_user = "herman";
  private static String m_password = "vampire";  private static String m_tableName;// = "TEST_TABLE3";
  private static String geomMetaDataTable = "user_sdo_geom_metadata";  public static void main(String args[]) throws Exception
  {
    if (args.length != 1)
    {
      System.out.println("Parameters:");
      System.out.println("<Table name>: Table name for the result");
      return;
    }    m_tableName = args[0].toUpperCase();
    String url = "jdbc:oracle:thin:@" + m_host + ":" + m_port + ":" + m_sid;
    OracleConnection conn = null;
    try
    {
      DriverManager.registerDriver(new OracleDriver());
      conn = (OracleConnection)DriverManager.getConnection(url, m_user, m_password);
    }
    catch(Exception e) { e.printStackTrace(); }    prepareTableForData(conn);    Geometry geom;
    STRUCT str;
    GeometryFactory gF = OraSpatialManager.getGeometryFactory();
    // Set spatial reference system in which the geometries will be created
    SRManager srManager = OraSpatialManager.getSpatialReferenceManager(conn);
    SpatialReference sref = srManager.retrieve(8265);   // SRID = 8265: LAT-LON (NAD 83)
    gF.setSpatialReference(sref);    String update = "INSERT INTO " + m_tableName + " VALUES(?, ?)";
    PreparedStatement ps = conn.prepareStatement(update);    GeometryAdapter sdoAdapter = OraSpatialManager.getGeometryAdapter("SDO", "8.1.6",
                                   null, STRUCT.class, null, conn);    // create all types of different geometries
    {
      // create point
      System.out.println(" ");
      System.out.println("Create point...");
      geom = gF.createPoint(11, 22);
      System.out.println("export to SDO...");
      str = (STRUCT) sdoAdapter.exportGeometry(STRUCT.class, geom);
      System.out.println("write to DB...");
      ps.setInt(1, 1);
      ps.setObject(2, str);
      ps.executeUpdate();
    }    {
      // create line string
      System.out.println(" ");
      System.out.println("Create line string...");
      double ordArray[] = {10, 10, 20, 20, 30, 40};
      geom = gF.createLineString(ordArray);
      System.out.println("write to DB...");
      ps.setInt(1, 2);
      ps.setObject(2, sdoAdapter.exportGeometry(STRUCT.class, geom));
      ps.executeUpdate();
    }    System.out.println("close connection...");
    ps.close();
    conn.close();
    System.out.println("Done with writing.");    ////////////////////////////////////////////////////////////////////////////
    System.out.println("Now check DB...");
    System.out.println("////////////////////////////////");
    try
    {
      conn = (OracleConnection)DriverManager.getConnection(url, m_user, m_password);
    }
    catch(Exception e) { e.printStackTrace(); }
    conn.setDefaultRowPrefetch(100);
    // Need to reconstruct geometry adapter if connection changes
    sdoAdapter = OraSpatialManager.getGeometryAdapter("SDO", "8.1.6",
                   null, STRUCT.class, null, conn);    String query = "SELECT * FROM " + m_tableName;
    Statement stm = conn.createStatement();
    OracleResultSet ors = (OracleResultSet)stm.executeQuery(query);
    while (ors.next())
    {
      Geometry geometry = sdoAdapter.importGeometry(ors.getObject(2));
      System.out.println("Geometry type: " + geometry.getGeometryType());
    }
    stm.close();
    conn.close();
  }  protected static void prepareTableForData(Connection conn)
  {
    ////////////////////////////////////////////////////////////////////////////
    // Preparation of the database
    ////////////////////////////////////////////////////////////////////////////    // drop table
    System.out.println("Dropping old table...");
    Statement stmt = null;
    String update;
    try
    {
      stmt = conn.createStatement();
      update = "DROP TABLE " + m_tableName;
      stmt.executeUpdate(update);
      stmt.close();
    }
    catch (SQLException de) { System.out.println(de); }    // delete reference to it from meta data table
    try
    {
      stmt = conn.createStatement();
      update =
        "DELETE FROM " + geomMetaDataTable + " WHERE table_name = '" + m_tableName + "'";
      stmt.executeUpdate(update);
      stmt.close();
    }
    catch (SQLException de) { System.out.println(de); }    try
    {
      // create table
      System.out.println("Creating new table...");
      stmt = conn.createStatement();
      update = "CREATE TABLE " + m_tableName +
               " (gid NUMBER, geometry MDSYS.SDO_GEOMETRY)";
      stmt.executeUpdate(update);
      stmt.close();
    }
    catch (SQLException de) { System.out.println(de); }    try
    {
      // add reference to it to meta data table
      stmt = conn.createStatement();
      update = "INSERT INTO " + geomMetaDataTable + " VALUES ('" + m_tableName +
               "', 'GEOMETRY', MDSYS.SDO_DIM_ARRAY(" +
               "MDSYS.SDO_DIM_ELEMENT('X', -180, 180, 0.0000005), " +
               "MDSYS.SDO_DIM_ELEMENT('Y', -90, 90, 0.0000005)), 1)";
      stmt.executeUpdate(update);
      stmt.close();
    }
    catch (SQLException de) { System.out.println(de); }
  }
}