我正在编写以下代码,用于使用3路(OCI,THIN和数据源)连接java和Oracle 10g XE,代码运行成功,但不知道THIN和OCI与数据源之间的区别连接。
1 -
public static void main (String args[]) throws SQLException
{
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:hr/hr@localhost:1521/XE");
Connection con = ods.getConnection();
System.out.println("Connected");
con.close();
}
2-
public static void main(String args[])
{
try
{
// load oracle driver
Class.forName("oracle.jdbc.driver.OracleDriver");
// connect using Thin driver
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");
System.out.println("Connected Successfully To Oracle");
con.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
3 -
public static void main(String args[])
{
try
{
// load oracle driver
Class.forName("oracle.jdbc.driver.OracleDriver");
// connect using Native-API (OCI) driver
Connection con = DriverManager.getConnection("jdbc:oracle:oci:@","hr","hr" );
System.out.println("Connected Successfully To Oracle using OCI driver");
con.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
答案 0 :(得分:29)
Oracle为他们的数据库提供了四种类型的驱动程序,但我只会列举你问过的两种驱动程序。
OCI驱动程序是type 2 JDBC驱动程序,它使用本机代码连接到数据库。因此,它只是具有本机Oracle驱动程序的平台上的一个选项,并且它不是“纯粹的”Java实现。
Oracle的JDBC Thin驱动程序是一个type 4 JDBC驱动程序,它使用Java套接字直接连接到Oracle。它直接实现了Oracle的SQL * Net TCP / IP协议。因为它是100%Java,所以它独立于平台,也可以从Applet运行。 (不是你应该的)
答案 1 :(得分:3)
JDBC瘦驱动程序和JDBC OCI驱动程序都使用相同的网络协议。从服务器的角度来看,两者之间没有区别。 JDBC瘦驱动程序是100%Java,并且只有一个独立的jar(高级功能需要一些额外的jar)。 JDBC OCI驱动程序对OCI C客户端库进行JNI调用,因此依赖于要安装的Oracle完整客户端(OCI也是sqlplus使用的)。 Oracle建议使用大多数客户使用的JDBC瘦驱动程序。它是最快的驱动程序和最强大的驱动程序。