Java 数据库 (oracle) odbc 驱动程序不匹配
Posted
技术标签:
【中文标题】Java 数据库 (oracle) odbc 驱动程序不匹配【英文标题】:Java-Database (oracle) odbc driver mismatch 【发布时间】:2012-09-29 08:48:48 【问题描述】:我正在尝试创建一个以 java 作为前端,oracle 作为后端的数据库应用程序。
我有一个安装了 32 位 oracle 10g (10.2) 的 64 位 win7 系统。
我从/通过C:\Windows\SysWOW64\odbcad32.exe
创建了一个 DSN,因为“控制面板/管理工具/odbc 数据源”没有显示“Microsoft Oracle ODBC”选项
但在连接到数据库时出现此错误:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at InsertRecord.main(InsertRecord.java:28)
at __SHELL7.run(__SHELL7.java:6)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at bluej.runtime.ExecServer$3.run(ExecServer.java:724)
我认为这是因为 64 位 32 位冲突。如果是这样,那么如果我为 64 位安装 odbc 驱动程序,它是否可以工作,或者我需要重新安装 win64 的 oracle 数据库。
如果驱动程序可以,那么我可以从哪里单独下载驱动程序?
有人帮忙吗??我在尝试使用 odbc 连接到 oracle 时遇到此错误
Driver loaded
java.sql.SQLException: [Microsoft][ODBC driver for Oracle][Oracle]ORA-06413: Connection not open.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at InsertRecord.main(InsertRecord.java:28)
java.lang.NullPointerException
【问题讨论】:
在无需设置 ODBC 数据源的情况下不使用 Oracle 的本地 Java 驱动程序(类型 4)的任何原因? 没有具体原因,只是我是新手,我知道是因为我已经在 32-win7 中使用过它 可能您可以同时保留 64 位和 32 位的 oracle 数据库驱动程序。通过链接communities.sas.com/thread/34643?start=0&tstart=0 @Ankit 但这意味着我需要下载它并重新检查整个过程!司机不会做这项工作吗? 任何 64 位 odbc 驱动程序的链接? 【参考方案1】:您一开始就不应该使用 JDBC/ODBC 桥。
下载 Oracle 的(纯 Java)JDBC 驱动程序 (http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html),您不必担心任何 32 位与 64 位不匹配了。
作为一个额外的好处,数据库访问将更快、更可靠。
没有什么可以“安装”的,只需使用应用程序中的 .jar 文件即可。不要乱用 tnsnames.ora,不要在计算机上安装 Oracle 客户端。
【讨论】:
@RC-user:那又怎样?该驱动程序来自 Oracle 的 Oracle DB,因此您可以连接到 Oracle 并使用 Oracle。你的问题到底是什么?以上是关于Java 数据库 (oracle) odbc 驱动程序不匹配的主要内容,如果未能解决你的问题,请参考以下文章
ODBC数据源:没有ORACLE用户DSN,也没有驱动程序?