在使用语句 Class.forName("…") 加载 JDBC Driver 并在 DriverManager 类中注册后,即可与数据库建立连接。 DriverManager 对象提供如下三种建立数据库连接的方法。每种方法都返回一个 Connection 对象实例,区别是参数不同:
( 1 ) Connection getConnection(String url);
( 2 ) Connection getConnection(String url, java.util.Properties info);
( 3 ) Connection getConnection(String url, String user, String password);
Oracle JDBC Driver
当使用 Oracle JDBC Driver 与数据库建立连接时, getConnection 方法中的 URL 参数形式如下(来自 $ORACLEHOME/ora92/jdbc/doc/javadoc/oracle/jdbc/OracleDriver.html):
jdbc:oracle::@
jdbc:oracle::/@
例如:
getConnection("jdbc:oracle:oci8:@myhost","scott","tiger");
getConnection("jdbc:oracle:oci8:scott/tiger@myhost);
如果 drivertype 是 oci ,如果客户端和服务器在一台机器上,可以不提供属性,例如:
getConnection("jdbc:oracle:oci8:@ ", "scott", "tiger");
getConnection("jdbc:oracle:oci8:scott/tiger@);
如果 drivertype 是 thin ,则必须指明端口号和 sid,例如:
getConnection("jdbc:oracle:thin:@myhost:1521:orcl ", "scott", "tiger");
getConnection("jdbc:oracle:thin:scott/tiger@myhost:1521:orcl");
· 包含特殊字符
因为 host 和 sid 只允许字母、数字等字符(参见Oracle联机文档“数据库标识”),所以该情况不讨论。
· 用户名包含特殊字符
用 Enterprise Manager 创建了用户(1) Y/BAI (2) Y@BAI ,密码都是ybai。
用以下URL以用户(1) 与数据库 test 连接:
getConnection("jdbc:oracle:thin:Y/BAI/ybai@127.0.0.1:1521:test");
连接不能建立,异常信息如下:
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
用以下URL以用户(2)与数据库test连接:
getConnection("jdbc:oracle:thin:Y@BAI/ybai@127.0.0.1:1521:test");
连接不能建立,异常信息如下:
java.sql.SQLException: 调用中无效的参数通过测试发现,Oracle不能处理 URL中包含 ’/’ 或 ’@’ 的用户名。这时,用户可以将用户名称设置到info参数中并调用getConnection方法(2),或者调用 getConnection 方法(3)如下:
getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test","Y/BAI", "ybai");
getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test","Y@BAI", "ybai");