首先,建一个java项目Creep_TestOracle,在项目下建一个包oracle_test。
(1)使用odbc连接oracle
package oarcle_test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* 使用odbc连接oracle
* @author TF
*
*/
public class TestOracle {
public static void main(String[] args) {
try {
//1.加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到连接
Connection conn = DriverManager.getConnection("jdbc:odbc:shenzhou", "scott", "0108");
//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:shenzhou", "scott", "0108");
第一个参数:jdbc:odbc:xxx,其中的xxx是oracle的数据源
第二个参数:scott是oracle的scott表
第三个参数:表的口令(即密码)
*****创建oracle的数据源
我的电脑--->控制面板--->管理工具--->数据源(ODBC)--->用户DSN,添加---->找到oracle的驱动,点击完成--->Data source Name: 你的数据源名字,我的是shenzhou
TNS service Name: 你的oracle数据库实例,我的是ORCL
这样数据源就搞好了,数据库就连接成功了。
(2)jdbc连接oracle
package oarcle_test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* 使用jdbc连接oracle
* @author TF
*/
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", "0108");
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: oracle.jdbc.driver.OracleDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at oracletest.OracleTest.main(OracleTest.java:9)
这是因为我们没有导入oracle的jdbc包,现在开始导入jdbc包。
在项目名称上右击--->properties --> Java Build Path ---> Libraries --->Add Exterban JARS
然后选择oracle的jdbc目录,选择D:\app\TF\product\11.2.0\dbhome_1\owb\wf\lib下的ojdbc14.jar,点击ok。
然后就能连接成功。
***************注:
private String user="scott";
private String password="tiger";
private String className="oracle.jdbc.driver.OracleDriver";
private String url="jdbc:oracle:oci@localhost:1158:orcl"; //这个url可能无效
private String url = "jdbc:oracle:thin:@hr-PC:1521:orcl";hr-PC和1521很关键,也就是侦听串里有没有这个,在
D:\app\TF\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora这个文件里有没有,一定要根据tnsnames.ora这个文件来配置url路径,否则会出错!!!
环境:
操作系统:64位WIN7 数据库:SQL Server 2000 SP1 开发语言:J2EE
在Servlet连接数据库时出错提示:
[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
解决方法:
升级SQL Server 2000 SP SP1 至SQL Server 2000 SP SP4或更高版本。启用odbc配置程序,SQL Server自带有两个版本的odbc配置程序:
64位版的位置:C:\windows\system32\odbcad32.exe
32位版的位置:C:\windows\sysWOW64\odbcad32.exe
通过32位版的ODBC配置正确系统DNS后,即可正常执行。