如何将 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 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Oracle 11g XE 导出“数据库”并将其导入 Oracle 10.2?