浅谈访问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;

 }

}

 }

posted @ 2013-05-16 22:55  xudong91  阅读(340)  评论(0编辑  收藏  举报