我收到错误,没有合适的驱动程序?

时间:2010-01-12 06:53:40

标签: java jdbc odbc

我无法找出它显示错误的原因。我之前在Oracle中创建了名为books的表。

create table books(num number);

然后我用Java编写代码:

Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection(
    "jdbc:oracle:thin:@CF:1521:orcl",
    "scott",
    "tiger");
Statement s=con.createStatement();
s.execute("INSERT INTO BOOKS VALUES(123)");
s.close();
con.close();

它显示错误为“没有合适的驱动程序”

4 个答案:

答案 0 :(得分:3)

似乎oracle驱动程序(v 1.6)实际上是“被叫”:

oracle.jdbc.OracleDriver

答案 1 :(得分:0)

您需要将类路径设置为指向jar文件。我多年前使用的那个是“ojdbc14.jar”。找到适合你的here

答案 2 :(得分:0)

如果从命令行执行代码 - 确保使用$ CLASSPATH环境变量或命令行参数-cp [pathTo:] ojdbc14.jar设置类路径,或者在Manifest.mf中设置ClassPath:属性当前正在执行的jar

使用Eclipse IDE:检查构建路径是否存在jar /或是否存在构建问题 - 在问题选项卡中检查它们。

jar文件的版本(可以从Manifest.mf文件确定)将确认你是否使用正确的驱动程序包通过做一个简单的jar -tvf检查你的jar是否没有损坏。

答案 3 :(得分:0)

  

它显示错误为“没有合适的驱动程序”

您显然是System.out.println(e.getMessage())而不是e.printStackTrace()。然后你会得到那些小信息。但是这条消息可以识别为SQLException,基本上可以有两个原因:

  1. 未加载驱动程序。
  2. 对于任何已加载的驱动程序,(错误的)JDBC URL未为Driver#acceptsURL()返回true
  3. 要修复1,您需要确保拥有

    Class.forName("com.example.jdbc.Driver");
    
    DriverManager#getConnection()调用之前的代码中

    你执行吞下/忽略任何ClassNotFoundException,可以通过放置它来抛出它例如一个空的catch块或只是做一个System.out.println()而不是抛出它。

    要修复2,您需要确保JDBC URL语法符合JDBC驱动程序文档中指定的语法。如果是Oracle,它位于here。这是一个引用:

    在JDBC中,所有url都以jdbc:protocol开头:这是标准。在此之后是特定于驱动程序的,并且没有两个驱动程序是相同的。

      

    网址的形式是什么?

         

    网址的一般形式是

    jdbc:oracle:<drivertype>:<username/password>@<database>
    
         

    <drivertype>是其中一个

         
        
    •   
    • OCI
    •   
    • kprb
    •   
         

    <username/password>为空或<username>/<password>

    形式

    在您的特定情况下,网址看起来没问题,因此您可能加载了正确的驱动程序,或者忽略了它所引发的ClassNotFoundException。< / p>