在eclipse下连接oracle数据库时,经常遇到一些问题,现将一些连接方式和注意事项总结如下:
首先,建立和分析java程序和oracle数据库交互的两种方法。
第一种方法: Windows下采用JDBC-ODBC
Bridge连接oracle数据库
1、安装oracle客户端程序,在tnsnames.ora中配置好相应的数据库连接串文件,此处设连接串名为“dbora”。
2、在windows的控制面板->“数据库源ODBC”中,建立相应的用户或者系统DSN,具体方法:在安装的数据源的驱动程序选择“Microsoft
ODBC for Oracle”。
点击“完成”,在弹出的对话框中,填入如下信息:
数据源名称:dbjdbc
描述:jdbc数据源
用户名称:manager -此为数据库用户名
服务器:dbora -此即为连接串名
其中“dbjdbc”是在java程序中要引用的名字,至此数据源dbjdbc已建立。
3、 建立如下的java程序
// 使用本地的jdbc连接串,查询oracle数据库表
import java.sql.*;
public class lookup {
public static void main(String[] args)
throws SQLException, ClassNotFoundException {
//定义了数据库连接串
String dbUrl = "jdbc:odbc:dbjdbc";
//数据库的用户名
String user = "manager";
//数据库的用户口令
String password = "ora912";
// 加载jdbc-odbc bridge驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// 与url指定的数据源建立连接
Connection c = DriverManager.getConnection(dbUrl, user,
password);
//采用Statement进行查询
Statement s = c.createStatement();
ResultSet r = s.executeQuery("SELECT empno,name from emp");
while(r.next()) {
// 打印字段信息
System.out.println(r.getString("empno") + ",
" + r.getString("name ") );
}
// 关闭Statement,其上的ResultSet也将关闭
s.close();
}
}
在jdbc中查询的语句有3类:Statement、PreparedStatement、CallableStatement。
第二种连接方式: 此种方法不需要安装Oracle的客户端,也不需要配置odbc,故此种方法用得比较普遍。
此方法在使用时需要将oracle的jar包加到环境变量classpath变量中,此包可以在oralce客户端程序的$ORACLE_HOME/jdbc/lib/classes12.jar,$ORACLE_HOME/jdbc/lib/nls_charset12,$ORACLE_HOME/jdbc/lib/ocrs12找到。然后将这些jar包的ptah加入到环境变量下系统变量下的classpath中,如:;D:\oracle\ora92\jdbc\lib\classes12.jar;D:\oracle\ora92\jdbc\lib\ocrs12;D:\oracle\ora92\jdbc\lib\nls_charset12; 。然后在eclipse中,选中目标项目工程,右键点击属性(properties),打开属性框,在左边选中java创建路径(java
build path) ,右边选择libraries,然后点击按钮添加库(add
libraries),在弹出的对话框中选择用户库(user
libraries),点击下一步(next),在打开的对话框右边点击用户库按钮(user
libraries),打开对话框,在右边点击新建按钮(new),在输入框中输入用户库名,根据你的需要随便取个名字,点击ok;回来选中你刚才的用户库名,然后点击右边的添加JARS按钮(add
jars),在$ORACLE_HOME/jdbc/lib目录下找到classes12.jar,nls_charset12,ocrs12三个JAR包进行添加,点击ok完成。返回到你的工程中,你就会看到你添加的这三个JAR包了,好了,测试连接Oracle数据库,连接成功。
下面为JDBC方式连接oracle的代码:
import java.sql.*;
public class jdbcthin {
//dbUrl数据库连接串信息,其中“1521”为端口,“ora9”为sid
String dbUrl = "jdbc:oracle:thin:@localhost:1521:orcl";
//theUser为数据库用户名
String theUser = "sman";
//thePw为数据库密码
String thePw = "sman";
//几个数据库变量
Connection c = null;
Statement conn;
ResultSet rs = null;
//初始化连接
public jdbcthin() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
//与url指定的数据源建立连接
c = DriverManager.getConnection(dbUrl, theUser, thePw);
//采用Statement进行查询
conn = c.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}
//执行查询
public ResultSet executeQuery(String sql) {
rs = null;
try {
rs = conn.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public void close() {
try {
conn.close();
c.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ResultSet newrs;
jdbcthin newjdbc = new jdbcthin();
newrs = newjdbc.executeQuery("select * from eventtype");
try {
while (newrs.next()) {
System.out.print(newrs.getString("event_type"));
System.out.println(":"+newrs.getString("content"));
}
} catch (Exception e) {
e.printStackTrace();
}
newjdbc.close();
}
}