Oracle 11g 不支持 JDK 1.7
Posted
技术标签:
【中文标题】Oracle 11g 不支持 JDK 1.7【英文标题】:Oracle 11g not supporting JDK 1.7 【发布时间】:2017-03-19 14:39:09 【问题描述】:我正在使用 Tomcat 服务器 8
我已经在Lib中添加了Ojdbc7.jar
并使用 Oracle 11g (11.2.0.2) 版本
我的代码是:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class PrintForm extends HttpServlet
public void doGet(HttpServletRequest req, HttpServletResponse res)throws IOException, ServletException
res.setContentType("text/html");
PrintWriter out = res.getWriter();
//Variables declaration
String emp_name = req.getParameter("name");
String s = "INSERT into Emp values(?,?)";
try
//Making connection with Oracle
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
//Inserting data into table
PreparedStatement pst = con.prepareStatement(s);
pst.setInt(1,1);
pst.setString(2,emp_name);
pst.executeUpdate();
con.close();
catch(Exception e)
out.println(e);
这是在扔,
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@localhost:1521:xe
这个例外。
那么我应该使用什么驱动程序或 JDK 版本? 当前版本是 1.7
【问题讨论】:
您应该阅读 JDBC 基础教程。这将在第一课中介绍。 【参考方案1】:您必须在Connection con = D....
之前添加Class.forName("oracle.jdbc.driver.OracleDriver");
行
【讨论】:
非常感谢。忘记加了,因为和JDK 1.8一样不支持了,所以1.7忘记加了 @MagentoDeveloper 你错了,这在 Java 8 中也是一样的。问题可能是你在应用程序中部署了驱动程序,而不是在 tomcatlib
文件夹中。在这种情况下,JDBC 4 自动加载驱动程序(Java 6 中引入)将不起作用,您需要手动加载驱动程序。【参考方案2】:
您首先需要注册驱动程序
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
请阅读 oracle 驱动程序的 javadocs。它解释了这一点以及如何在不同的场景中获得连接:https://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.html
此外,如果您在线搜索错误 No suitable driver found for
,您会发现很多网站都在解释如何在这种情况(和其他情况下)解决此问题。
【讨论】:
我已经按照你的建议做了一些修改,但是同样的例外,我正在上传完整的代码,你可以检查一下。【参考方案3】:您应该在创建连接之前先加载驱动程序:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe",
"system", "oracle");
你可以在这里找到一个很好的教程:Connect to Oracle DB via JDBC driver
【讨论】:
【参考方案4】:根据Oracle JDBC FAQ
如果您将 Oracle 11.2 或 11gR2 与 Java 8、7 或 6 结合使用,则应使用 ojdbc6.jar。 (需要注意的是,JDK7 和 JDK8 仅在 11.2.0.3 和 11.2.0.4 中受支持。) 如果您将 Oracle 11.2 或 11gR2 与 Java 5 一起使用,则应使用 ojdbc5.jar。 如果您在 Java 7 和 8 中使用 Oracle 12.1 或 12cR1,那么您应该使用 ojdbc7.jar 如果您在 Java 6 中使用 Oracle 12.1 或 12cR1,那么您应该使用 ojdbc6.jar 如果您将 Oracle 12.2 或 12cR2 与 Java 8 一起使用,则应使用 ojdbc8.jar。 如果您将 Oracle 18.3 与 Java 8 到 11 结合使用,则应使用 ojdbc8.jar。以下内容已从常见问题解答中删除,因为除“持续支持”计划外,不再支持 Oracle 11.1 及更早版本:
如果您将 Oracle 11gR1 与 Java 6 一起使用,则应使用 ojdbc6.jar。 如果您将 Oracle 11gR1 与 Java 5 结合使用,则应使用 ojdbc5.jar。您使用的是 11gR2,因此您需要 ojdbc6.jar,但请注意有关支持 Java 7 和 Java 8 的 Oracle DB 版本。
还建议使用与您的 Oracle DB 版本兼容的最新 Java 版本;即 Java 8。(Java 7 和更早的版本已经过了它们的“生命周期”......除非您有 Oracle Java 支持合同。)
【讨论】:
以上是关于Oracle 11g 不支持 JDK 1.7的主要内容,如果未能解决你的问题,请参考以下文章
如何解决从 oracle 11g jdbc 7/14 jdk 1.7 中的读取调用中得到减一?