我无法找出它显示错误的原因。我之前在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();
它显示错误为“没有合适的驱动程序”
答案 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
,基本上可以有两个原因:
Driver#acceptsURL()
返回true
。要修复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>