2009-06-28 71 views
29

我是Java相关Web开发的新手,我似乎无法使用JDBC工作来获得简单的程序。我正在使用现成的Oracle 10g XE和Eclipse EE IDE。从我到目前为止检查过的书籍和网页中,我已经将问题缩小到写入不正确的数据库URL或缺少JAR文件。我收到以下错误:使用JDBC连接到Oracle数据库的URL字符串格式

java.sql.SQLException: No suitable driver found for jdbc:oracle://127.0.0.1:8080

用下面的代码:

import java.sql.*; 

public class DatabaseTestOne { 
    public static void main(String[] args) { 
     String url = "jdbc:oracle://127.0.0.1:8080"; 
     String username = "HR"; 
     String password = "samplepass"; 

     String sql = "SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE LAST_NAME='King'"; 
     Connection connection; 
     try { 
      connection = DriverManager.getConnection(url, username, password); 
      Statement statement = connection.createStatement(); 
      System.out.println(statement.execute(sql)); 
      connection.close(); 
     } catch (SQLException e) { 
      System.err.println(e); 
     } 
    } 
} 

什么是数据库URL的正确格式,反正?他们提到了很多,但我一直无法找到描述。

EDIT(分辨率):

基于duffymo的答案,我从Oracle's download site得到ojdbc14.jar和Eclipse项目的引用的库放弃了它。然后我将代码的开头更改为

... 
// jdbc:oracle:thin:@<hostname>:<port>:<sid> 
String url = "jdbc:oracle:thin:@GalacticAC:1521:xe"; 
... 

它工作。

回答

29

查看here

您的网址相当不正确。应该看起来像这样:

url="jdbc:oracle:thin:@localhost:1521:orcl" 

您也没有注册驱动程序类。您想要下载瘦驱动程序JAR,将其放入您的CLASSPATH中,并使您的代码看起来更像this

更新:“ojdbc14.jar”中的“14”代表JDK 1.4。您应该将您的驱动程序版本与您正在运行的JDK进行匹配。我敢打赌,这意味着JDK 5或6

+0

只是想更新的文件似乎已经搬到这里: http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.html顶部投票答案中提供的链接现在重定向到404页面。 – drosenblatt 2014-01-29 16:45:04

+3

使用SID的连接字符串越来越老式。使用服务名称可以提高DBA的灵活性(例如,在一个数据库实例上托管多个服务(整合)或为一个服务(RAC)使用多个实例)。请参阅@Pops答案。 – 2014-02-11 10:18:44

0
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());   
connection = DriverManager.getConnection("jdbc:oracle:thin:@machinename:portnum:schemaname","userid","password"); 
34

有两种方法来设置它。如果你有一个SID,用这个(旧的)格式:

jdbc:oracle:thin:@[HOST][:PORT]:SID 

如果你有一个Oracle服务名称,使用这个(新)格式:

jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE 

来源:this OraFAQ page

call to getConnection() is correct

此外,正如duffymo所说的,确保实际的驱动程序代码是通过在类路径中包含ojdbc6.jar而存在的,其中数字对应于您正在使用的Java版本。

11

对URL进行正确的格式可以是以下格式之一:

jdbc:oracle:thin:@<hostName>:<portNumber>:<sid>; (if you have sid) 
jdbc:oracle:thin:@//<hostName>:<portNumber>/serviceName; (if you have oracle service name) 

而且不要把任何空间存在。 尝试使用1521作为端口号。 sid(数据库名称)必须与环境变量中的相同(如果您使用的是Windows)。

3

如果您正在使用,然后Oracle 10g中expree版:
1.加载类使用 DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); 2.用于连接到数据库的使用 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:username/[email protected]:1521:xe");