浅谈访问Oracle数据库的JDBC封装类的写法
最近,在学习jdbc的过程中,每次连接数据库都要写大量的重复代码。
于是,想到了代码的复用。封装:面向对象的三大基本特性之一,就能提高代码的复用。
想动手写一个jdbc封装类专门用来访问数据库用的。
package com.dong.dbutils;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
public class DBUtil{
private DBUtil(){}
static{
try{
Class.forName("oracle.jdbc.OracleDriver");
}catch(ClassNotFoundException e){
e.printStackTrace();
System.out.println("驱动加载失败!");
}
}
/*注册驱动类通常有两种方法,第一种是利用DriverManager的registerDriver(new driver())方法。
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());在我们查看Driver.java源码文件,
我们可以看到另外一种加载驱动的方法。当一个驱动类被加载时,它首先会创建一个自己的实例,然后用DriverManager注册,
此时我们采用第二种方法:Class.forName("oracle.jdbc.OracleDriver");我们知道这种方法是拿到驱动类的字节码对象,
而字节码对象是字节码文件在内存中的表现形式,只有在该驱动类被加载到内存中时才能拿到,这样,把这段代码放在static语句块中,
就能完成与第一种相同的功能,何乐而不为呢?
*/
public static Connection getConn(){
Connection conn = null;
try{
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521/orcl","scott","tiger");
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
public static Statement getStmt(Connection conn){
Statement stmt = null;
try{
stmt = conn.createStatement();
}catch(SQLException e){
e.printStackTrace();
}
return stmt;
}
public static PreparedStatement getStmt(Connection conn,String sql){
PreparedStatement pstmt = null;
try{
pstmt = conn.prepareStatement(sql);
}catch(SQLException e){
e.printStackTrace();
}
return pstmt;
}
public static ResultSet getQuery(Statement stmt,String sql){
ResultSet rs = null;
try{
rs = stmt.executeQuery(sql);
}catch(SQLException e){
e.printStackTrace();
}
return rs;
}
public static ResultSet getQuery(PreparedStatement pstmt){
ResultSet rs = null;
try{
rs = pstmt.executeQuery();
}catch(SQLException e){
e.printStackTrace();
}
return rs;
}
public static int checkUpdate(Statement stmt,String sql){
int n = 0;
try{
n = stmt.executeUpdate(sql);
}catch(SQLException e){
e.printStackTrace();
}
if(n>0){
System.out.println("更新成功!");
}else System.out.println("更新失败!");
}
public static int checkUpdate(PreparedStatement pstmt){
init n = 0;
try{
n = pstmt.executeUpdate();
}catch(SQLException e){
e.printStackTrace();
}
if(n>0){
System.out.println("更新成功!");
}else System.out.println("更新失败!");
}
public static void close(ResultSet rs){
if(rs != null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
rs = null;
}
}
public static void close(Statement stmt){
if(stmt != null){
try{
stmt.close();
}catch(SQLExceptio9n e){
e.printStackTrace();
}
stmt = null;
}
}
public static void close(Connection conn){
if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
conn = null;
}
}
}