java jdbc连接oracle_Java使用JDBC连接Oracle 11gR2
http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html下載Oracle 11gR2的數(shù)據(jù)庫驅(qū)動程序:ojdbc6.jar
下載完成后,將其放到JDK的jre\lib\ext下,如D:\dev\Java\jdk1.7.0_21\jre\lib\ext
(2)啟動oracle服務(wù)器端的監(jiān)聽器和Oracle服務(wù)
啟動監(jiān)聽器:
$ lsnrctl start
啟動Oracle服務(wù):
$ 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.加載數(shù)據(jù)庫驅(qū)動
//Class.forName("oracle.jdbc.driver.OracleDriver");//會拋出ClassNotFoundException
Class.forName("oracle.jdbc.OracleDriver");//會拋出ClassNotFoundException
//2.使用DriverManager獲取數(shù)據(jù)庫連接
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.180:1521:orcl", "scott", "tiger");//會拋出SQLException
System.out.println("數(shù)據(jù)庫連接成功: "+conn);
//3.使用Connection來創(chuàng)建一個Statement對象
smt = conn.createStatement();//會拋出SQLException
//4.使用Statement對象執(zhí)行SQL語句
/*
Statement有三種執(zhí)行sql語句的方法:
1. execute可執(zhí)行任何SQL語句--返回一個boolean值
如果執(zhí)行后的第一個結(jié)果是ResultSet,則返回true,否則返回false
2. executeQuery 執(zhí)行Select語句--返回查詢到的結(jié)果集
3. executeUpdate 用于執(zhí)行DML語句和DDL語句--返回一個整數(shù),執(zhí)行DML代表被SQL語句影響的記錄條數(shù);執(zhí)行DDL語句返回0
*/
rs = smt.executeQuery("select * from emp");//會拋出SQLException
//5.操作結(jié)果集
/*
ResultSet對象有兩類方法操作查詢結(jié)果集
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.回收數(shù)據(jù)庫資源
if(rs != null){
//關(guān)閉ResultSet
rs.close();//會拋出SQLException
}
if(smt != null){
//關(guān)閉Statement
smt.close();
}
if(conn != null){
//關(guān)閉Connection
conn.close();
}
}
catch(SQLException e){
e.printStackTrace();
}
}
}
}
運(yùn)行結(jié)果:
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"; //數(shù)據(jù)庫驅(qū)動類的字符串
private static String DB_URL = "jdbc:oracle:thin:@192.168.1.180:1521:orcl"; //數(shù)據(jù)庫URL
private static String USERNAME = "scott"; //登陸數(shù)據(jù)庫的用戶名
private static String PASSWORD = "tiger"; //密碼
/* 連接數(shù)據(jù)庫 */
private void getConn(){
try{
//1 加載數(shù)據(jù)庫驅(qū)動
Class.forName(DB_CLASS_NAME);
//2 使用DriverManager獲取數(shù)據(jù)庫連接
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()獲得數(shù)據(jù)庫連接失敗.\r\n\r\n連接類型:"
+ DB_CLASS_NAME + "\r\n連接位置:" + DB_URL);
}
System.out.println("數(shù)據(jù)庫連接成功: "+conn);
}
/* 執(zhí)行查詢語句 */
public ResultSet executeQuery(String sql){
getConn();
System.out.println("SQL:> "+sql);//測試使用,打印即將執(zhí)行的SQL語句
try{
//3 使用Connection對象創(chuàng)建Statement對象
smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//4 使用Statement對象執(zhí)行SQL語句
rs = smt.executeQuery(sql);
}
catch(SQLException e){
e.printStackTrace();
}
return rs;
}
/* 執(zhí)行DDL和DML語句 */
public int executeUpdate(String sql){
int result = 0;
getConn();
System.out.println("SQL:> "+sql);//測試使用,打印即將執(zhí)行的SQL語句
try{
//3 使用Connection對象創(chuàng)建Statement對象
smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//4 使用Statement對象執(zhí)行SQL語句
result = smt.executeUpdate(sql);
}
catch(SQLException e){
e.printStackTrace();
}
return result;
}
/* 關(guān)閉數(shù)據(jù)庫連接 */
public void close(){
if(rs != null){
//關(guān)閉ResultSet
try{
rs.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
if(smt != null){
//關(guān)閉Statement
try{
smt.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
if(conn != null){
//關(guān)閉Connection
try{
conn.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
System.out.println("數(shù)據(jù)庫連接已關(guān)閉: "+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 執(zhí)行查詢操作 */
DBConn db1 = new DBConn();
String sql1 = "select * from emp";//字符串型的sql語句末尾不要帶分號
//執(zhí)行SQL語句,返回結(jié)果集
ResultSet rs1 = db1.executeQuery(sql1);
//操作結(jié)果集
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 執(zhí)行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 執(zhí)行插入操作 */
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 執(zhí)行查詢操作 */
DBConn db4 = new DBConn();
String sql4 = "select * from demo";//字符串型的sql語句末尾不要帶分號
//執(zhí)行SQL語句,返回結(jié)果集
ResultSet rs2 = db4.executeQuery(sql4);
//操作結(jié)果集
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 執(zhí)行刪除操作 */
DBConn db5 = new DBConn();
String sql5 = "delete from demo";
int result3 = db5.executeUpdate(sql5);
System.out.println("有" + result3 + "條記錄受到影響!");
db5.close();
/* 6 執(zhí)行查詢操作 */
DBConn db6 = new DBConn();
String sql6 = "select * from demo";//字符串型的sql語句末尾不要帶分號
//執(zhí)行SQL語句,返回結(jié)果集
ResultSet rs3 = db6.executeQuery(sql6);
//操作結(jié)果集
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 執(zhí)行DDL操作 */
DBConn db7 = new DBConn();
String sql7 = "drop table demo";
int result = db7.executeUpdate(sql7);
System.out.println("有" + result + "條記錄受到影響!");
db7.close();
}
}
運(yùn)行結(jié)果:
3.將數(shù)據(jù)庫連接信息保存到一個dbconfig.properties配置文件中
這樣的做法好處是:當(dāng)我們需要把應(yīng)用程序從開發(fā)環(huán)境移植到生產(chǎn)環(huán)境時,無需修改源代碼,只需要修改dbconfig.properties配置文件即可。
(1)dbconfig.properties:
#DB_CLASS_NAME(數(shù)據(jù)庫驅(qū)動類的類名)
DB_CLASS_NAME=oracle.jdbc.OracleDriver
#DB_CLASS_NAME=com.mysql.jdbc.Driver
#DB_URL(要連接數(shù)據(jù)庫的地址)
DB_URL=jdbc:oracle:thin:@192.168.1.180:1521:orcl
#DB_URL=jdbc:mysql://127.0.0.1:3306/test
#USERNAME(數(shù)據(jù)庫用戶)
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"; //數(shù)據(jù)庫驅(qū)動類的字符串
private static String DB_URL = "jdbc:oracle:thin:@192.168.1.180:1521:orcl"; //數(shù)據(jù)庫URL
private static String USERNAME = "scott"; //登陸數(shù)據(jù)庫的用戶名
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();
}
}
/* 連接數(shù)據(jù)庫 */
private void getConn(){
try{
//1 加載數(shù)據(jù)庫驅(qū)動
Class.forName(DB_CLASS_NAME);
//2 使用DriverManager獲取數(shù)據(jù)庫連接
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()獲得數(shù)據(jù)庫連接失敗.\r\n\r\n連接類型:"
+ DB_CLASS_NAME + "\r\n連接位置:" + DB_URL);
}
//System.out.println("數(shù)據(jù)庫連接成功: "+conn);
}
/* 執(zhí)行查詢語句 */
public ResultSet executeQuery(String sql){
getConn();
System.out.println("SQL:> "+sql);//測試使用,打印即將執(zhí)行的SQL語句
try{
//3 使用Connection對象創(chuàng)建Statement對象
smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//4 使用Statement對象執(zhí)行SQL語句
rs = smt.executeQuery(sql);
}
catch(SQLException e){
e.printStackTrace();
}
return rs;
}
/* 執(zhí)行DDL和DML語句 */
public int executeUpdate(String sql){
int result = 0;
getConn();
System.out.println("SQL:> "+sql);//測試使用,打印即將執(zhí)行的SQL語句
try{
//3 使用Connection對象創(chuàng)建Statement對象
smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//4 使用Statement對象執(zhí)行SQL語句
result = smt.executeUpdate(sql);
}
catch(SQLException e){
e.printStackTrace();
}
return result;
}
/* 關(guān)閉數(shù)據(jù)庫連接 */
public void close(){
if(rs != null){
//關(guān)閉ResultSet
try{
rs.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
if(smt != null){
//關(guān)閉Statement
try{
smt.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
if(conn != null){
//關(guān)閉Connection
try{
conn.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
//System.out.println("數(shù)據(jù)庫連接已關(guān)閉: "+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 執(zhí)行查詢操作 */
DBConn1 db1 = new DBConn1();
String sql1 = "select * from emp";//字符串型的sql語句末尾不要帶分號
//執(zhí)行SQL語句,返回結(jié)果集
ResultSet rs1 = db1.executeQuery(sql1);
//操作結(jié)果集
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 執(zhí)行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 執(zhí)行插入操作 */
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 執(zhí)行查詢操作 */
DBConn1 db4 = new DBConn1();
String sql4 = "select * from demo";//字符串型的sql語句末尾不要帶分號
//執(zhí)行SQL語句,返回結(jié)果集
ResultSet rs2 = db4.executeQuery(sql4);
//操作結(jié)果集
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 執(zhí)行刪除操作 */
DBConn1 db5 = new DBConn1();
String sql5 = "delete from demo";
int result3 = db5.executeUpdate(sql5);
System.out.println("有" + result3 + "條記錄受到影響!");
db5.close();
/* 6 執(zhí)行查詢操作 */
DBConn1 db6 = new DBConn1();
String sql6 = "select * from demo";//字符串型的sql語句末尾不要帶分號
//執(zhí)行SQL語句,返回結(jié)果集
ResultSet rs3 = db6.executeQuery(sql6);
//操作結(jié)果集
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 執(zhí)行DDL操作 */
DBConn1 db7 = new DBConn1();
String sql7 = "drop table demo";
int result = db7.executeUpdate(sql7);
System.out.println("有" + result + "條記錄受到影響!");
db7.close();
}
}
運(yùn)行結(jié)果:
大小: 73.9 KB
大小: 31.9 KB
大小: 12.2 KB
大小: 8.6 KB
大小: 55.7 KB
大小: 13.8 KB
分享到:
2013-06-05 01:27
瀏覽 5068
評論
總結(jié)
以上是生活随笔為你收集整理的java jdbc连接oracle_Java使用JDBC连接Oracle 11gR2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 持续集成mysql_DevOps安装、部
- 下一篇: java怎么往右浮动_[Java教程]j