Java连接oracle数据库

本文介绍了两种实现Java程序与Oracle数据库交互的方法。一种是通过JDBC-ODBC桥接的方式,这种方法较为传统;另一种是使用JDBC Thin驱动,无需安装Oracle客户端或配置ODBC。文章提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建立和分析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。

jdbc的thin方式

  此种方法不需要安装Oracle的客户端,也不需要配置odbc,故此种方法用得比较普遍。

  此方法在使用时需要将oracle的jar包加到classpath变量中,此包可以在oralce客户端程序的$ORACLE_HOME/jdbc/lib/classes12.jar找到。

import java.sql.*; 

public class jdbcthin { 
//dbUrl数据库连接串信息,其中“1521”为端口,“ora9”为sid 
String dbUrl = "jdbc:oracle:thin:@10.10.20.15:1521:ora9"; 
//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(); 
} 
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值