Java数据库操作(JDBC)——eclipse连接oracle11g教程

Oracle 11g 64位百度云盘下载:http://pan.baidu.com/s/1dEljrpR 

[参考:http://jingyan.baidu.com/article/f25ef25444249a482c1b82d1.html]

Oracle安装《一头扎进Oracle 11g》http://www.tudou.com/listplay/_yGSNcRB3Fs.html?spm=a2h1s.8267930.infoPl.5~5~1~3~5!2~H6~A

[启动Oracle相应服务]

PLSQLDeveloper下载地址:http://www.panduoduo.net/r/13494819

PL/SQL Developer连接本地Oracle 11g 64位数据库:http://www.cnblogs.com/ymj126/p/3712727.html

【中途用到的instantclient-basic-nt-12.1.0.2.0.zip :http://download.csdn.net/detail/u011850780/8740361】

PLSQL Developer新手使用教程(图文教程):http://jingyan.baidu.com/article/c85b7a6403acd1003bac950f.html

Oracle语法实例:引自 马士兵

create table DEPT3
(
DEPTNO NUMBER(2) primary key,
DNAME VARCHAR2(14),
LOC VARCHAR2(13)
);
insert into DEPT3 values(11,'Lei Li','Beijing');
insert into DEPT3 values(8,'Mei Han','Shanghai');
insert into DEPT3 values(2,'Ming Gao','Shenzhen');


select * from DEPT3;


实例一:转自:http://blog.csdn.net/mukekeheart/article/details/50019169

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

  1.首先先建立一个项目DB,右键点击DB,选择Build Path-->Configure Build Path进入


通过Add External JARs..选择D:\myoracle\oracle\product\11.2.0\dbhome_1\jdbc\lib下的ojdbc5.jar,点击ok。




至此,oracle数据库的包已经导入成功了

接下来要通过程序连接到oracle上

[java]  view plain  copy
  1. public class TestJDBC {  
  2.         private Connection con ;  
  3.         private String user = "system" ;  
  4.         private String password = "08240918xppKL" ;  
  5.         private String className = "oracle.jdbc.driver.OracleDriver" ;  
  6.         private String url = "jdbc:oracle:thin:@keli-PC:1521:orcl" ;// hr-PC和1521很关键,也就是侦听串里有没有这个  
  7.   
  8.         public static void main(String[] args) {  
  9.                // TODO Auto-generated method stub  
  10.               TestJDBC c = new TestJDBC();  
  11.                c.ConnectOracle();  
  12.                c.getCon();  
  13.                c.closed();  
  14.        }  
  15.   
  16.         public void ConnectOracle() {  
  17.                try {  
  18.                      Class. forName(className);  
  19.                      System. out.println("加载数据库驱动成功!" );  
  20.               } catch (ClassNotFoundException e ) {  
  21.                      System. out.println("加载数据库驱动失败!" );  
  22.                       e.printStackTrace();  
  23.               }  
  24.        }  
  25.   
  26.         /** 创建数据库连接 */  
  27.         public Connection getCon() {  
  28.                try {  
  29.                       con = DriverManager. getConnection(url, user, password);  
  30.                      System. out.println("创建数据库连接成功!" );  
  31.               } catch (SQLException e ) {  
  32.                      System. out.print(con );  
  33.                      System. out.println("创建数据库连接失败!" );  
  34.                       con = null;  
  35.                       e.printStackTrace();  
  36.               }  
  37.                return con ;  
  38.        }  
  39.   
  40.         public void closed() {  
  41.                try {  
  42.                       if (con != null) {  
  43.                             con.close();  
  44.                      }  
  45.               } catch (SQLException e ) {  
  46.                      System. out.println("关闭con对象失败!" );  
  47.                       e.printStackTrace();  
  48.               }  
  49.        }  
  50.   
  51. }  

没有问题的话会出现如下的运行结果



此外,在定义连接的url时要根据自己的情况选择,具体选择方法如下

private String url = "jdbc:oracle:thin:@hr-PC:1521:orcl";hr-PC、1521、orcl 很关键,也就是侦听串里有没有这个,根据 D:\myoracle\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora(可以用记事本打开)这个文件里的信息填写
****一定要根据tnsnames.ora这个文件来配置url路径,否则会出错!!!



实例2:

参考:

a)Java JDBC Thin Driver 连接 Oracle 三种方法:http://aijuans.iteye.com/blog/1488998   英文版:http://razorsql.com/docs/help_oracle.html

格式一:  Oracle JDBC Thin using a ServiceName: 

jdbc:oracle:thin:@//<host>:<port>/<service_name> 
Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE

 

注意这里的格式,@后面有//, 这是与使用SID的主要区别。

这种格式是Oracle 推荐的格式,因为对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点。

【SERVICE_NAME通过安装的Oracle里边的“tnsnames.ora”里边寻找】

 

格式二: Oracle JDBC Thin using an SID: 

jdbc:oracle:thin:@<host>:<port>:<SID> 
Example: jdbc:oracle:thin:192.168.2.1:1521:X01A 

Note: Support for SID is being phased out. Oracle recommends that users switch over to using service names.

 

 

格式三:Oracle JDBC Thin using a TNSName: 

jdbc:oracle:thin:@<TNSName> 
Example: jdbc:oracle:thin:@GL 

Note: 
Support for TNSNames was added in the driver release 10.2.0.1


b)一个非常标准的Java连接Oracle数据库的示例代码: http://www.cnblogs.com/liuxianan/archive/2012/08/05/2624300.html


import java.sql.*;

/*范例名称:
 * 原文件名称:
 * 要点:
 * 1. JDBC之连接oracle数据库
 */
public class TestJDBC {
	//private static String url="jdbc:oracle:"+"thin:@localhost:1521:orcl";//orcl好像是全局sid
	private static String url="jdbc:oracle:"+"thin:@//localhost:1521/orcl.100.40.15";
	//private static String url="jdbc:oracle:"+"thin:localhost:1521:oracle";
	private static String user="scott";//用户名
	private static String psd="Oracle11g";//密码

	public static void main(String[] args) {
		Connection conn=null;//创建一个数据库连接
		PreparedStatement pre=null;//创建一个预编译语句对象,一般都是用这个而不用Statement
		ResultSet result=null;//创建一个结果集对象
		
		try{
			//1)new一个数据库驱动实例 加载Oracle驱动程序
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("开始尝试连接数据库");
			//new oracle.jdbc.driver.OracleDriver();//new的第二个方法
			//2)连接oracle数据库
			conn=DriverManager.getConnection(url,user,psd);
			System.out.println("连接陈功");
			//3)执行SQL语句
			String sql="select * from DEPT";
			pre=conn.prepareStatement(sql);
			result=pre.executeQuery();
			while(result.next()){
				System.out.println("Name: "+result.getString("DNAME")+", Location: "+result.getString("LOC"));
			}
			
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			try
	        {
	            // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
	            // 注意关闭的顺序,最后使用的最先关闭
	            if (result != null){
	                result.close();
	                result=null;
	            }
	            if (pre != null){
	            	pre.close();
	            	pre=null;
	            }             
	            if (conn != null){
	                conn.close();
	                conn=null;
	            }
	            System.out.println("数据库连接已关闭!");
	        }
	        catch (SQLException e)
	        {
	            e.printStackTrace();
	        }
		}
	}

}


运行结果:

连接陈功
Name: ACCOUNTING, Location: NEW YORK
Name: RESEARCH, Location: DALLAS
Name: SALES, Location: CHICAGO
Name: OPERATIONS, Location: BOSTON
数据库连接已关闭!

实例3——更新表

import java.sql.*;

/*范例名称:
 * 原文件名称:
 * 要点:
 * 1. JDBC之连接oracle数据库:更新数据库的表
 */
public class TestDML {
	// private static String
	// url="jdbc:oracle:"+"thin:@localhost:1521:orcl";//orcl好像是全局sid
	private static String url = "jdbc:oracle:" + "thin:@//localhost:1521/orcl.100.40.15";
	// private static String url="jdbc:oracle:"+"thin:localhost:1521:oracle";
	private static String user = "scott";// 用户名
	private static String psd = "Oracle11g";// 密码

	public static void main(String[] args) {
		Connection conn=null;//创建一个数据库连接
		PreparedStatement pre=null;//创建一个预编译语句对象,一般都是用这个而不用Statement

		try{
			//1)new一个数据库驱动实例 加载Oracle驱动程序
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("开始尝试连接数据库");
			//new oracle.jdbc.driver.OracleDriver();//new的第二个方法
			//2)连接oracle数据库
			conn=DriverManager.getConnection(url,user,psd);
			System.out.println("连接陈功");
			//3)执行SQL语句_添加数据
			String sql;
			//sql="insert into DEPT3 values (25,'Yang Tai','Qinhuangdao')";
			//conn.prepareStatement(sql).executeUpdate();//更新表
			sql="insert into DEPT3 values (?,?,?)";//使用通配符
			pre=conn.prepareStatement(sql);
			pre.setInt(1, 35);
			pre.setString(2, "Liang Yue");
			pre.setString(3, "Canghai");
			pre.executeUpdate();//更新

		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			try
	        {
	            // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
	            // 注意关闭的顺序,最后使用的最先关闭	          
	            if (pre != null){
	            	pre.close();
	            	pre=null;
	            }             
	            if (conn != null){
	                conn.close();
	                conn=null;
	            }
	            System.out.println("数据库连接已关闭!");
	        }
	        catch (SQLException e)
	        {
	            e.printStackTrace();
	        }
		}
	}

}

实例4:批处理

import java.sql.*;

/*范例名称:
 * 原文件名称:
 * 要点:
 * 1. JDBC之连接oracle数据库:更新数据库的表 批处理 
 * Transaction(用处:银行更新双方账户时,必须同时成功或者失败)
 */
public class TestDML {
	// private static String
	// url="jdbc:oracle:"+"thin:@localhost:1521:orcl";//orcl好像是全局sid
	private static String url = "jdbc:oracle:" + "thin:@//localhost:1521/orcl.100.40.15";
	// private static String url="jdbc:oracle:"+"thin:localhost:1521:oracle";
	private static String user = "scott";// 用户名
	private static String psd = "Oracle11g";// 密码

	public static void main(String[] args) {
		Connection conn=null;//创建一个数据库连接
		PreparedStatement pre=null;//创建一个预编译语句对象,一般都是用这个而不用Statement

		try{
			//1)new一个数据库驱动实例 加载Oracle驱动程序
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("开始尝试连接数据库");
			//new oracle.jdbc.driver.OracleDriver();//new的第二个方法
			//2)连接oracle数据库
			conn=DriverManager.getConnection(url,user,psd);
			System.out.println("连接陈功");
			//3)执行SQL语句_添加数据
			String sql;			
			sql="insert into DEPT3 values (?,?,?)";//使用通配符
			pre=conn.prepareStatement(sql);
			
			conn.setAutoCommit(false);//设置为不自动提交
			
			pre.setInt(1, 32);
			pre.setString(2, "Xing Xing");
			pre.setString(3, "Yinhe");
			pre.addBatch();//添加一条
			pre.setInt(1, 44);
			pre.setString(2, "Dong Hei");
			pre.setString(3, "Yinhe");
			pre.addBatch();//添加一条
			
			conn.commit();//提交
			conn.setAutoCommit(true);//恢复默认设置 自动提交
			
			pre.executeBatch();//批处理更新

		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}catch(SQLException e) {
			e.printStackTrace();
			
			//处理出错
			try{
				if(conn!=null){
					conn.rollback();
					conn.setAutoCommit(true);
				}
			}catch (SQLException e1) {
				e1.printStackTrace();
			}
			
		}finally {
			try
	        {
	            // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
	            // 注意关闭的顺序,最后使用的最先关闭	          
	            if (pre != null){
	            	pre.close();
	            	pre=null;
	            }             
	            if (conn != null){
	                conn.close();
	                conn=null;
	            }
	            System.out.println("数据库连接已关闭!");
	        }
	        catch (SQLException e)
	        {
	            e.printStackTrace();
	        }
		}
	}

}

SQL Explorer插件 (参考下一篇文章)显示Oracle用户属性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值