JB9在开发时使用自己的Libarary库,和系统的classpath无关.

解决方案 »

  1.   

    JDBC的驱动程序是动态加载(Class.forName()),不建议在classpath中使用绝对路径
      

  2.   

    package plusin;import plusin.PConnection;
    import plusin.ConnectionException;
    import java.util.Properties;
    import plusin.PData;
    import java.sql.*;
    import javax.swing.JOptionPane;/**
     * <p>Title: Oracle connection</p>
     * <p>Description: Oracle connection</p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: www.sclh.com</p>
     * @author etl.zc
     * @version 1.0
     */public class PlusinConnection implements PConnection
    {
      private static final String PROPERTY_USER = "user";
      private static final String PROPERTY_PASSWORD = "password";
      private static final String PROPERTY_URL = "url";
      private static final String PROPERTY_TABLE = "table";  private Properties properties = new Properties();
      private Connection connection = null;  public PlusinConnection()
      {
        properties.setProperty( PROPERTY_URL,"");
        properties.setProperty( PROPERTY_USER,"");
        properties.setProperty( PROPERTY_PASSWORD,"");
        properties.setProperty( PROPERTY_TABLE,"");
      }  public void setProperty(String parm1, String parm2) throws plusin.ConnectionException {
        properties.setProperty(parm1, parm2);
      }  public String getProperty(String parm1) throws plusin.ConnectionException {
        return properties.getProperty( parm1 );
      }
      public Properties getProperties() throws plusin.ConnectionException {
        return properties;
      }  public void open() throws plusin.ConnectionException
      {
        if( connection != null )
          throw new ConnectionException("已经打开了数据库连接");
        try
        {
          Class.forName("oracle.jdbc.driver.OracleDriver");
          connection = DriverManager.getConnection(getProperty(PROPERTY_URL),
                                                   getProperty(PROPERTY_USER),
                                                   getProperty(PROPERTY_PASSWORD));
        }
        catch( SQLException ex )
        {
          throw new plusin.ConnectionException("open操作出现SQLException异常");
        }
        catch( ClassNotFoundException ex )
        {
          ex.printStackTrace();
          throw new plusin.ConnectionException("open操作出现ClassNotFoundException异常");
        }  }
      public void close() throws plusin.ConnectionException
      {
        if(connection == null)
          throw new plusin.ConnectionException("没有打开数据连接,close操作被忽略!");    try
        {
          connection.close();
          connection = null;
          System.gc();
        }
        catch( SQLException ex )
        {
          throw new plusin.ConnectionException("close操作失败(SQLException)!");
        }
      }  public PData getData() throws plusin.ConnectionException
      {
        if( connection == null )
          throw new plusin.ConnectionException(",没有打开数据库连接, getData操作失败!");    OracleData data  = new OracleData();
        Statement  state = null;
        ResultSet  set   = null;
        StringBuffer sbSql = new StringBuffer(50);    try
        {
          state = connection.createStatement();
          sbSql.append( "select * from ");
          sbSql.append( getProperty(PROPERTY_TABLE) );      set = state.executeQuery(sbSql.toString());      ResultSetMetaData rsmd = set.getMetaData();
          int iColumnCount = rsmd.getColumnCount();
          for( int i = 1; i <= iColumnCount; i++ )
            data.appendLine( rsmd.getColumnName(i) + " -> " + rsmd.getColumnType(i) );      set.close();
          state.close();
        }
        catch( SQLException ex )
        {
          ex.printStackTrace();
          throw new plusin.ConnectionException("getData操作出现SQLException异常");
        }    return data;
      }  public static void main(String[] args) throws Exception
      {
        PlusinConnection oracleConnection1 = new PlusinConnection();
        oracleConnection1.setProperty(PlusinConnection.PROPERTY_URL,"jdbc:oracle:thin:@192.168.0.250:1521:orcl");
        oracleConnection1.setProperty(PlusinConnection.PROPERTY_USER,"lfj");
        oracleConnection1.setProperty(PlusinConnection.PROPERTY_PASSWORD,"lfj");
        oracleConnection1.setProperty(PlusinConnection.PROPERTY_TABLE,"isep.rk_jbxx");    PData data = null;
        oracleConnection1.open();
        data = oracleConnection1.getData();
        System.out.println(data);
        oracleConnection1.close();
      }
    }
      

  3.   

    我的代码就这样的,应为我这个是个插件. 在工程里面没有添加 oracle for jdbc driver. 
    我相单独编译出一个jar出来三.