http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html下载Oracle 11gR2的数据库驱动程序:ojdbc6.jar

下载完成后,将其放到JDK的jre\lib\ext下,如D:\dev\Java\jdk1.7.0_21\jre\lib\ext

(2)启动oracle服务器端的监听器和Oracle服务

启动监听器:

$ lsnrctl start

启动Oracle服务:

$ sqlplus /nolog

SQL> conn / as sysdba

SQL> startup

1.简单形式:

ConnOracle.java

import java.sql.DriverManager;

import java.sql.Connection;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class ConnOracle{

public static void main(String[] args){

Connection conn = null;

Statement smt = null;

ResultSet rs = null;

try{

//1.加载数据库驱动

//Class.forName("oracle.jdbc.driver.OracleDriver");//会抛出ClassNotFoundException

Class.forName("oracle.jdbc.OracleDriver");//会抛出ClassNotFoundException

//2.使用DriverManager获取数据库连接

conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.180:1521:orcl", "scott", "tiger");//会抛出SQLException

System.out.println("数据库连接成功: "+conn);

//3.使用Connection来创建一个Statement对象

smt = conn.createStatement();//会抛出SQLException

//4.使用Statement对象执行SQL语句

/*

Statement有三种执行sql语句的方法:

1. execute可执行任何SQL语句--返回一个boolean值

如果执行后的第一个结果是ResultSet,则返回true,否则返回false

2. executeQuery 执行Select语句--返回查询到的结果集

3. executeUpdate 用于执行DML语句和DDL语句--返回一个整数,执行DML代表被SQL语句影响的记录条数;执行DDL语句返回0

*/

rs = smt.executeQuery("select * from emp");//会抛出SQLException

//5.操作结果集

/*

ResultSet对象有两类方法操作查询结果集

1. next()将记录指针下移一行,first(),last()等

2. getXxx(列索引|列名)获取有记录指针指向行,特定列的值

*/

while(rs.next()){//会抛出SQLException

System.out.println(rs.getInt(1) + "\t"

+ rs.getString(2)+"\t"

+ rs.getString(3));

}

}

catch(ClassNotFoundException e){

e.printStackTrace();

}

catch(SQLException e){

e.printStackTrace();

}

finally{

try{

//6.回收数据库资源

if(rs != null){

//关闭ResultSet

rs.close();//会抛出SQLException

}

if(smt != null){

//关闭Statement

smt.close();

}

if(conn != null){

//关闭Connection

conn.close();

}

}

catch(SQLException e){

e.printStackTrace();

}

}

}

}

运行结果:

2.抽象成一个类

(1)DBConn.java

import java.sql.DriverManager;

import java.sql.Connection;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class DBConn{

private Connection conn = null;

private Statement smt = null;

private ResultSet rs = null;

//private static String DB_CLASS_NAME = "oracle.jdbc.driver.OracleDriver";

private static String DB_CLASS_NAME = "oracle.jdbc.OracleDriver"; //数据库驱动类的字符串

private static String DB_URL = "jdbc:oracle:thin:@192.168.1.180:1521:orcl"; //数据库URL

private static String USERNAME = "scott"; //登陆数据库的用户名

private static String PASSWORD = "tiger"; //密码

/* 连接数据库 */

private void getConn(){

try{

//1 加载数据库驱动

Class.forName(DB_CLASS_NAME);

//2 使用DriverManager获取数据库连接

conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

}

catch(ClassNotFoundException e){

e.printStackTrace();

}

catch(SQLException e){

e.printStackTrace();

}

if(conn == null){

System.err.println("警告:DriverManager.getConnection()获得数据库连接失败.\r\n\r\n连接类型:"

+ DB_CLASS_NAME + "\r\n连接位置:" + DB_URL);

}

System.out.println("数据库连接成功: "+conn);

}

/* 执行查询语句 */

public ResultSet executeQuery(String sql){

getConn();

System.out.println("SQL:> "+sql);//测试使用,打印即将执行的SQL语句

try{

//3 使用Connection对象创建Statement对象

smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

//4 使用Statement对象执行SQL语句

rs = smt.executeQuery(sql);

}

catch(SQLException e){

e.printStackTrace();

}

return rs;

}

/* 执行DDL和DML语句 */

public int executeUpdate(String sql){

int result = 0;

getConn();

System.out.println("SQL:> "+sql);//测试使用,打印即将执行的SQL语句

try{

//3 使用Connection对象创建Statement对象

smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

//4 使用Statement对象执行SQL语句

result = smt.executeUpdate(sql);

}

catch(SQLException e){

e.printStackTrace();

}

return result;

}

/* 关闭数据库连接 */

public void close(){

if(rs != null){

//关闭ResultSet

try{

rs.close();

}

catch(SQLException e){

e.printStackTrace();

}

}

if(smt != null){

//关闭Statement

try{

smt.close();

}

catch(SQLException e){

e.printStackTrace();

}

}

if(conn != null){

//关闭Connection

try{

conn.close();

}

catch(SQLException e){

e.printStackTrace();

}

}

System.out.println("数据库连接已关闭: "+conn);

}

}

(2)DBConn_Demo.java

import java.sql.DriverManager;

import java.sql.Connection;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class DBConn_Demo{

public static void main(String[] args){

/* 1 执行查询操作 */

DBConn db1 = new DBConn();

String sql1 = "select * from emp";//字符串型的sql语句末尾不要带分号

//执行SQL语句,返回结果集

ResultSet rs1 = db1.executeQuery(sql1);

//操作结果集

try{

while(rs1.next()){

System.out.println(rs1.getInt(1) + "\t"

+ rs1.getString(2)+"\t"

+ rs1.getString(3));

}

}

catch(SQLException e){

e.printStackTrace();

}

db1.close();

/* 2 执行DDL操作 */

DBConn db2 = new DBConn();

String sql2 = "create table demo(id int, name varchar(10), age int)";

int result1 = db2.executeUpdate(sql2);

System.out.println("有" + result1 + "条记录受到影响!");

db2.close();

/* 3 执行插入操作 */

DBConn db3 = new DBConn();

String sql3 = "insert into demo values(1, 'huhu', 18)";

int result2 = db3.executeUpdate(sql3);

System.out.println("有" + result2 + "条记录受到影响!");

db3.close();

/* 4 执行查询操作 */

DBConn db4 = new DBConn();

String sql4 = "select * from demo";//字符串型的sql语句末尾不要带分号

//执行SQL语句,返回结果集

ResultSet rs2 = db4.executeQuery(sql4);

//操作结果集

try{

while(rs2.next()){

System.out.println(rs2.getInt(1) + "\t"

+ rs2.getString(2)+"\t"

+ rs2.getString(3));

}

}

catch(SQLException e){

e.printStackTrace();

}

db4.close();

/* 5 执行删除操作 */

DBConn db5 = new DBConn();

String sql5 = "delete from demo";

int result3 = db5.executeUpdate(sql5);

System.out.println("有" + result3 + "条记录受到影响!");

db5.close();

/* 6 执行查询操作 */

DBConn db6 = new DBConn();

String sql6 = "select * from demo";//字符串型的sql语句末尾不要带分号

//执行SQL语句,返回结果集

ResultSet rs3 = db6.executeQuery(sql6);

//操作结果集

try{

while(rs3.next()){

System.out.println(rs3.getInt(1) + "\t"

+ rs3.getString(2)+"\t"

+ rs3.getString(3));

}

}

catch(SQLException e){

e.printStackTrace();

}

db6.close();

/* 7 执行DDL操作 */

DBConn db7 = new DBConn();

String sql7 = "drop table demo";

int result = db7.executeUpdate(sql7);

System.out.println("有" + result + "条记录受到影响!");

db7.close();

}

}

运行结果:

3.将数据库连接信息保存到一个dbconfig.properties配置文件中

这样的做法好处是:当我们需要把应用程序从开发环境移植到生产环境时,无需修改源代码,只需要修改dbconfig.properties配置文件即可。

(1)dbconfig.properties:

#DB_CLASS_NAME(数据库驱动类的类名)

DB_CLASS_NAME=oracle.jdbc.OracleDriver

#DB_CLASS_NAME=com.mysql.jdbc.Driver

#DB_URL(要连接数据库的地址)

DB_URL=jdbc:oracle:thin:@192.168.1.180:1521:orcl

#DB_URL=jdbc:mysql://127.0.0.1:3306/test

#USERNAME(数据库用户)

USERNAME=scott

#USERNAME=root

#PASSWORD(密码)

PASSWORD=tiger

#PASSWORD=

(2)DBConn1.java:

import java.sql.DriverManager;

import java.sql.Connection;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.io.FileInputStream;

import java.util.Properties;

public class DBConn1{

private Connection conn = null;

private Statement smt = null;

private ResultSet rs = null;

//private static String DB_CLASS_NAME = "oracle.jdbc.driver.OracleDriver";

private static String DB_CLASS_NAME = "oracle.jdbc.OracleDriver"; //数据库驱动类的字符串

private static String DB_URL = "jdbc:oracle:thin:@192.168.1.180:1521:orcl"; //数据库URL

private static String USERNAME = "scott"; //登陆数据库的用户名

private static String PASSWORD = "tiger"; //密码

private static String propFileName = "dbconfig.properties"; //指定资源文件保存的位置

private static Properties props = new Properties();

public DBConn1(){

try{

//使用Properties类来加载属性文件

FileInputStream in=new FileInputStream(propFileName);

props.load(in);

DB_CLASS_NAME = props.getProperty("DB_CLASS_NAME");

DB_URL = props.getProperty("DB_URL");

USERNAME = props.getProperty("USERNAME");

PASSWORD = props.getProperty("PASSWORD");

}

catch (Exception e) {

e.printStackTrace();

}

}

/* 连接数据库 */

private void getConn(){

try{

//1 加载数据库驱动

Class.forName(DB_CLASS_NAME);

//2 使用DriverManager获取数据库连接

conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

}

catch(ClassNotFoundException e){

e.printStackTrace();

}

catch(SQLException e){

e.printStackTrace();

}

if(conn == null){

System.err.println("警告:DriverManager.getConnection()获得数据库连接失败.\r\n\r\n连接类型:"

+ DB_CLASS_NAME + "\r\n连接位置:" + DB_URL);

}

//System.out.println("数据库连接成功: "+conn);

}

/* 执行查询语句 */

public ResultSet executeQuery(String sql){

getConn();

System.out.println("SQL:> "+sql);//测试使用,打印即将执行的SQL语句

try{

//3 使用Connection对象创建Statement对象

smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

//4 使用Statement对象执行SQL语句

rs = smt.executeQuery(sql);

}

catch(SQLException e){

e.printStackTrace();

}

return rs;

}

/* 执行DDL和DML语句 */

public int executeUpdate(String sql){

int result = 0;

getConn();

System.out.println("SQL:> "+sql);//测试使用,打印即将执行的SQL语句

try{

//3 使用Connection对象创建Statement对象

smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

//4 使用Statement对象执行SQL语句

result = smt.executeUpdate(sql);

}

catch(SQLException e){

e.printStackTrace();

}

return result;

}

/* 关闭数据库连接 */

public void close(){

if(rs != null){

//关闭ResultSet

try{

rs.close();

}

catch(SQLException e){

e.printStackTrace();

}

}

if(smt != null){

//关闭Statement

try{

smt.close();

}

catch(SQLException e){

e.printStackTrace();

}

}

if(conn != null){

//关闭Connection

try{

conn.close();

}

catch(SQLException e){

e.printStackTrace();

}

}

//System.out.println("数据库连接已关闭: "+conn);

}

}

(3)DBConn1_Demo1.java:

import java.sql.DriverManager;

import java.sql.Connection;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class DBConn1_Demo1{

public static void main(String[] args){

/* 1 执行查询操作 */

DBConn1 db1 = new DBConn1();

String sql1 = "select * from emp";//字符串型的sql语句末尾不要带分号

//执行SQL语句,返回结果集

ResultSet rs1 = db1.executeQuery(sql1);

//操作结果集

try{

while(rs1.next()){

System.out.println(rs1.getInt(1) + "\t"

+ rs1.getString(2)+"\t"

+ rs1.getString(3));

}

}

catch(SQLException e){

e.printStackTrace();

}

db1.close();

/* 2 执行DDL操作 */

DBConn1 db2 = new DBConn1();

String sql2 = "create table demo(id int, name varchar(10), age int)";

int result1 = db2.executeUpdate(sql2);

System.out.println("有" + result1 + "条记录受到影响!");

db2.close();

/* 3 执行插入操作 */

DBConn1 db3 = new DBConn1();

String sql3 = "insert into demo values(1, 'huhu', 18)";

int result2 = db3.executeUpdate(sql3);

System.out.println("有" + result2 + "条记录受到影响!");

db3.close();

/* 4 执行查询操作 */

DBConn1 db4 = new DBConn1();

String sql4 = "select * from demo";//字符串型的sql语句末尾不要带分号

//执行SQL语句,返回结果集

ResultSet rs2 = db4.executeQuery(sql4);

//操作结果集

try{

while(rs2.next()){

System.out.println(rs2.getInt(1) + "\t"

+ rs2.getString(2)+"\t"

+ rs2.getString(3));

}

}

catch(SQLException e){

e.printStackTrace();

}

db4.close();

/* 5 执行删除操作 */

DBConn1 db5 = new DBConn1();

String sql5 = "delete from demo";

int result3 = db5.executeUpdate(sql5);

System.out.println("有" + result3 + "条记录受到影响!");

db5.close();

/* 6 执行查询操作 */

DBConn1 db6 = new DBConn1();

String sql6 = "select * from demo";//字符串型的sql语句末尾不要带分号

//执行SQL语句,返回结果集

ResultSet rs3 = db6.executeQuery(sql6);

//操作结果集

try{

while(rs3.next()){

System.out.println(rs3.getInt(1) + "\t"

+ rs3.getString(2)+"\t"

+ rs3.getString(3));

}

}

catch(SQLException e){

e.printStackTrace();

}

db6.close();

/* 7 执行DDL操作 */

DBConn1 db7 = new DBConn1();

String sql7 = "drop table demo";

int result = db7.executeUpdate(sql7);

System.out.println("有" + result + "条记录受到影响!");

db7.close();

}

}

运行结果:

大小: 73.9 KB

大小: 31.9 KB

大小: 12.2 KB

大小: 8.6 KB

大小: 55.7 KB

大小: 13.8 KB

分享到:

2013-06-05 01:27

浏览 5068

评论

java jdbc连接oracle_Java使用JDBC连接Oracle 11gR2相关推荐

  1. jdbc java连接oracle_java连接oracle jdbc连接

    Class.forName("oracle.jdbc.driver.OracleDriver"); Connection ct=Driver.Magager.getConnecti ...

  2. jdbc连接orcle数据库_JDBC连接Oracle数据库简单步骤

    @(Java)代码片段 import java.sql.*; /**创建JDBC应用程序的步骤 * 1.载入JDBC驱动程序 * 2.定义连接URL * 3.建立连接 * 4.创建Statement对 ...

  3. 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集

    文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...

  4. 大数据笔记16—java基础篇12(JDBC 、连接池、事务)

    目录 JDBC jdbc概述 jdbc入门案例 API详解 jdbc工具类 预编译执行平台 1.SQL注入问题(安全问题) 2API详解:预处理对象(PreparedStatement) 使用连接池重 ...

  5. orcle数据库代码连接方式(jdbc:oracle:thin:@192.168.3.98:1521:orcl)

    一. jdbc:oracle:thin:@192.168.3.98:1521:orcl jdbc:表示采用jdbc方式连接数据库 oracle:表示连接的是oracle数据库 thin:表示连接时采用 ...

  6. java 如何连接oracle_oracle教程之java连接oracle_java如何连接oracle数据库?

    java与oracle的接口: 在数据库中运行JAVA可以说是ORACLE8i的最令人激动的新特性.在你创建的使用ORACLE8i 数据库的应用程序中,你可以使用与JAVA有关的新特征,轻松的将程序发 ...

  7. java能写驱动吗_使用纯java jdbc驱动程序实现数据库的连接

    1.准备工作: 准备相关的软件(Eclipse除外,开源软件可以从官网下载) <1>.Microsoft SQL server 2005 Express Edition <2> ...

  8. java web之数据库的连接(使用JDBC连接sql server)

    一.安装JDBC驱动程序 二.加载驱动程序并建立连接对象 1.sql server的连接代码: 2.关于这里的用户名和密码 3.解决在用sa登录时可能出现的问题 三.建立数据库 四.在servlet中 ...

  9. java web之数据库的连接(使用JDBC连接sql server 2017)

    一.安装JDBC驱动程序 二.加载驱动程序并建立连接对象 1.sql server的连接代码: 2.关于这里的用户名和密码 3.解决在用sa登录时可能出现的问题 三.建立数据库 四.在servlet中 ...

最新文章

  1. access“idno”字段改为文本型_结构化文本计算示例(一)
  2. 简单js特效代码大全_Django 功法大全
  3. NGUI全面实践教程(大学霸内部资料)
  4. python structure_GitHub - CYZYZG/Data_Structure_with_Python: 这是我在学习《基于Python的数据结构》的时候的笔记与代码...
  5. 淘宝店铺图片数据迁移核心代码
  6. python基础知识三——try与except处理异常语句
  7. 160407、java实现多线程同步
  8. 缺氧游戏计算机,缺氧PC最低什么配置一览 你觉得高吗
  9. spring--打印hello--注解component--自动创建对象
  10. MD5,MD2,SHA加密的实现方式
  11. 数据库开发工具——安装教程
  12. 图论及其应用 2013年期末考试 答案总结
  13. Android手机安装谷歌服务框架
  14. GEE实现夜光遥感数据分析
  15. 用C语言实现英文单词排序
  16. 微软远程桌面mac/ios/android客户端
  17. Roson的Qt之旅#71 Qt绘制星空和旋转的星球
  18. 中医是如何辩证出脾胃湿热的?
  19. 【Spring注解驱动开发】使用@Autowired@Qualifier@Primary三大注解自动装配组件,你会了吗?
  20. 微信小程序不能直接加载本地静态图像作为背景的解决办法

热门文章

  1. 直播 | 复旦大学许燚:少量标注样本场景下基于数据编程的半监督分类
  2. 今日arXiv精选 | 21篇EMNLP 2021最新论文
  3. 直播预告 | 从编码器与解码器端改进生成式句子摘要
  4. ACM公选课第八节DP基础3 2020.4.23-5.10补
  5. 卡片游戏 数学期望
  6. 自考计算机原理知识点,09年自考计算机网络实用技术知识点:ATM原理
  7. springmvc多个视图解析器管理跳转资源
  8. java h5在线音频_用h5 audio播放mp3 播放一分钟就报错了
  9. 二进制代码查看器Binary Viewer下载教程
  10. 面试官:序列化和反序列化为什么要实现Serializable接口?