一. 创建oracle的数据源
我的电脑 --> 控制面板 --> 管理工具 --> 数据源(ODBC)--> 用户DSN,添加 ---> 找到oracle的驱动,点击完成 --> Data source Name: 你的数据源名字,(我的是testsp)
--> TNS service Name: 你的oracle数据库实例,(我的是ORCL)
-->点击Test connection(用于测试是否建立成功)-->完成。
二.使用odbc连接oracle
首先,打开Eclipse,建一个java项目Testmyoracle,在项目下建一个包com.sp。
package com.sp;
import java.sql.*;
/**
* 使用odbc连接oracle
* @author HJ
*
*/
public class TestOracle {
public static void main(String[] args) {
try {
//1.加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到连接
Connection conn = DriverManager.getConnection("jdbc:odbc:Testsp", "scott", "hjhj");
//3.从下面开始和 sql server 一模一样
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery("select * from emp");
while(resultSet.next()){
//用户名
System.out.println("用户名:" + resultSet.getString(2));
}
resultSet.close();
statement.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
注:①Class.forName()方法,里面的参数是固定的。
②Connection conn = DriverManager.getConnection("jdbc:odbc:Testsp", "scott", "hjhj");
第一个参数:jdbc:odbc:xxx,其中的xxx是oracle的数据源
第二个参数:scott是oracle的scott表
第三个参数:表的口令(即密码)
三.使用jdbc连接oracle
package com.sp;
import java.sql.*;
/**
* 使用jdbc连接oracle
* @author HJ
*/
public class TestOracle2 {
public static void main(String[] args) {
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "hjhj");
System.out.println("加载数据库驱动成功!");
//3.从下面开始和 sql server 一模一样
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery("select * from emp");
while(resultSet.next()){
//用户名
System.out.println("用户名:" + resultSet.getString(2));
}
resultSet.close();
statement.close();
conn.close();
} catch (Exception e) {
System.out.println("加载数据库驱动失败!");
}
}
}
如上两运行成功,会在控制台显示scott的员工名字。
但是,也可能会运行出错,抛异常。
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.sp.Testoracle.main(Testoracle.java:16)
这是因为我们没有导入oracle的jdbc包,现在开始导入jdbc包。
在项目名称上右击--->properties --> Java Build Path ---> Libraries --->Add Exterban JARS
然后选择oracle的jdbc目录,选择D:\app\Administrator\product\11.2.0\dbhome_2\oui\jlib下的classes12.jar-------或-------D:\app\Administrator\product\11.2.0\dbhome_2\owb\wf\lib下的 ojdbc14.jar,点击ok。
Oracle驱动classes12.jar 与ojdbc14.jar的区别
简单的说,如果使用jdk1.2和jdk1.3就使用classes12.jar;如果使用的jdk1.4和jdk1.5的,就选用ojdbc14.jar。更加详细的Oracle官方有说明。
以下是Oracle JDBC官方文档的说法:
也就是随便翻译一下就理解了。
JDBC Thin for All Platforms
classes12.jar (1,600,090 bytes) - for use with JDK 1.2 and JDK 1.3
在低级JDK版本1.2与1.3中使用的驱动,虽然实际上在1.4,1.5中使用大部分情况也是OK的
classes12_g.jar (2,044,594 bytes) - same as classes12.jar, except that classes were compiled with "javac -g" and contain some tracing information.
添加了编译调试信息的classes12.jar
classes12dms.jar (1,607,745 bytes) - same as classes12.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
添加了支持Oracle动态检测服务的classes12.jar
classes12dms_g.jar (2,052,968 bytes) - same as classes12dms.jar except that classes were compiled with "javac -g" and contain some tracing information.
添加了支持Oracle动态检测服务与编译调试信息的classes12.jar
ojdbc14.jar (1,545,954 bytes) - classes for use with JDK 1.4 and 1.5
在高级JDK版本1.4与1.5中使用的驱动
下面三个同classes12.jar的情况
ojdbc14_g.jar (1,938,906 bytes) - same as ojdbc14.jar, except that classes were compiled with "javac -g" and contain some tracing information.
ojdbc14dms.jar (1,553,561 bytes) - same as ojdbc14.jar, except that it contains additional code`to support Oracle Dynamic Monitoring Service.
ojdbc14dms_g.jar (1,947,136 bytes) - same as ojdbc14dms.jar, except that classes were compiled with "javac -g" and contain some tracing information.
orai18n.jar (1,645,114 bytes) - NLS classes for use with JDK 1.2, 1.3, 1.4, and 1.5. This jar file replaces the old nls_charset jar/zip files.
ons.jar (48,492 bytes) - for use by the pure Java client-side Oracle Notification Services (ONS) deamon.
demo.tar (604,160 bytes) or demo.zip (529,267 bytes) - contains sample JDBC programs. ....
然后就能连接成功。