如何将 oracle XE 数据库嵌入到可执行 jar 中?

Posted

技术标签:

【中文标题】如何将 oracle XE 数据库嵌入到可执行 jar 中?【英文标题】:how to embed oracle XE database in executable 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)。 【参考方案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。

以上是关于如何将 oracle XE 数据库嵌入到可执行 jar 中?的主要内容,如果未能解决你的问题,请参考以下文章

将 sqlite 数据库嵌入到 c++ 可执行文件中

如何从 Oracle 11g XE 导出“数据库”并将其导入 Oracle 10.2?

已经用管理员账户登录WIN7在安装oracle 10g xe时提示权限不够,需要用管理员账户进行安装?如何解决

如何将提交哈希添加到可执行文件的详细信息

如何从可执行文件中提取数组?

库的简介和分类