【问题标题】:how to embed oracle XE database in executable jar?如何将 oracle XE 数据库嵌入到可执行 jar 中?
【发布时间】:2014-07-17 10:44:23
【问题描述】:

我在“myecplise”中使用 java swings 和 oracle XE 数据库开发了 java 应用程序。我还创建了可执行 jar 文件,它在我的电脑上运行良好,但在其他电脑上显示 jdbc.odbc ClassNotFound 异常和 NullPointer 异常

我的连接码是

    import java.sql.*;

    public class Connect {

    static Connection con=null;

        public static Connection ConnectDB(){

        try{

           // Class.forName("oracle.jdbc.driver.OracleDriver");

             DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:system/system@localhost"); 

             return con;



        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e.getMessage());
            e.printStackTrace();
            return null;

    }      
}
}

【问题讨论】:

  • 你不应该自己打电话给DriverManager.registerDriver(除了非常罕见的例外)。这是由驱动程序本身在加载时完成的(如果是 JDBC 4.0 则自动完成),或者通过Class.forName)。

标签: java sql oracle swing jdbc


【解决方案1】:

DriverManager.getConnection("jdbc:oracle:thin:system/system@localhost") 表明驱动程序管理器将连接到位于您的 localhost 的数据库。在另一台 PC 上,它会尝试在另一台计算机上定位数据库,因为该数据库不存在,所以会发生异常。

您必须将连接更改为:

    DriverManager.getConnection("jdbc:oracle:thin:@arg0:arg1:arg2", arg3, arg4);

在哪里

arg0:托管数据库的机器的 IP。

arg1:数据库监听的端口。

arg2:数据库的 SID。

arg3:架构用户名。

arg4:架构密码。

【讨论】:

  • 感谢回复,Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","system");像这样,对吧??我也试过了,但还是不行……
  • 问题是第二台机器上没有数据库-至少没有相同的模式或SID-,数据库位于第一台机器上。您已经添加了包含数据库而不是“localhost”的原始机器的 IP。
猜你喜欢
  • 2021-06-25
  • 2016-04-26
  • 2021-09-29
  • 1970-01-01
  • 2013-07-28
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
相关资源
最近更新 更多