數據庫JDBC的改進作法

  //比較嚴謹操做數據庫的代碼
  public static void Test2(){
   Connection conn=null;
   Statement st=null;
   ResultSet rs=null;
   try { 
   conn=JdbcUtil.getConnection();//使用工具類加載驅動
   st=conn.createStatement();
   rs=st.executeQuery("select * from users");
   while (rs.next()) {//這裏用的是MYSQL的數據庫,裏邊已經建立了users的表
    System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t"+ rs.getObject(3) );
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } 
   finally{
    JdbcUtil.free(rs, st, conn);//調用工具類釋放資源,關閉數據庫鏈接
   }

  }

//這是一個工具類,用於保存管理員和密碼,異常處理和加載驅動等
public final class JdbcUtil {
 private static String url="jdbc:mysql://localhost:3306/test";
 private static String user="root";
 private static String password="846512890";
 private JdbcUtil(){
  
 }
//使用靜態代碼塊,加載驅動只需一次就夠了
 static {
  try {
   Class.forName("com.mysql.jdbc.Driver");
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   throw new ExceptionInInitializerError(e);
  }
 }
 public static Connection getConnection() throws SQLException{
  return DriverManager.getConnection(url, user, password);
 }
//最後全部資源釋放
 public static void free(ResultSet rs,Statement st,Connection conn){
  try{
   if(rs!=null)
    rs.close();
  }catch(SQLException e){
   e.printStackTrace();
  }
  finally
  {
   try{
    if(st!=null);
     st.close();
   }catch(SQLException e){
    e.printStackTrace();
   }finally{
    try{
     if(conn!=null)
     conn.close();
    }catch(SQLException e){
     e.printStackTrace();
    }
   }
  }
 }
}
相關文章
相關標籤/搜索