博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java数据库操作(JDBC)——eclipse连接oracle11g教程
阅读量:4029 次
发布时间:2019-05-24

本文共 9312 字,大约阅读时间需要 31 分钟。

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 是一个开放源代码的、基于的可扩展开发平台。Eclipse 附带了一个标准的插件集,包括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]   
  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 YORKName: RESEARCH, Location: DALLASName: SALES, Location: CHICAGOName: 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用户属性

你可能感兴趣的文章
BERT-flow:bert的向量表达是SOTA吗?
查看>>
Preprocessing data-sklearn数据预处理
查看>>
Java实现Oracle到MySQL的表迁移
查看>>
子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
查看>>
android:style和theme
查看>>
wait()、notify()和notifyAll()、sleep()、Condition、await()、signal()
查看>>
Arrays.asList()
查看>>
Big Endian 和 Little Endian
查看>>
java中重写方法应遵循规则
查看>>
Comparable的使用(用于Arrays.sort)
查看>>
Comparator(用于Arrays.sort)
查看>>
对自己的计划
查看>>
反应c语言程序结构特点的程序
查看>>
Android错误总结
查看>>
android margin
查看>>
Drawable setBounds()中的rect
查看>>
markdown编辑器
查看>>
过拟合原因及解决
查看>>
支持向量机(SVM)初探
查看>>
决策树与随机森林初探
查看>>