JDBC封裝類


開始接觸web的時候就接觸到了JDBC,到現在也有點年數了,現在使用的hibernate框架,底層就是封裝了JDBC,不過hibernate對JDBC的封裝做了很多好的處理,

我這里介紹的這個封裝類還是以前自己封裝的,只是簡單的實現了JDBC連接的操作,不過在沒有使用框架前這框封裝還是挺實用的

封裝也是java面向對象的三大特征之一:

package com.xidian.bbs.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

public class DbConn {
    @SuppressWarnings("unchecked")
    private Vector dsVector;
    int rowCount=0;
    int colCount=0;
    public String[] type=null;
    boolean flag=true;
    @SuppressWarnings("unchecked")
    public String[][] getData(String sql){
        //System.out.println("sql"+sql);
        query(sql);//調用了query()方法,來完成數據庫的連接
        String dsString[][]=new String[rowCount][colCount];
        if(flag==true){
            dsString=null;
        }else{
            for (int i=0;i<rowCount;i++){
                 //System.out.println();
                    Vector row=new Vector();
                    row=(Vector)dsVector.get(i);
                for(int j=0;j<colCount;j++){
                     //System.out.println("i"+i+"j"+j+"  "+(String)row.get(1));
                     
                    dsString[i][j]=(String)row.get(j);
                    
                }
            }
        }
        dsVector.clear();
        return dsString;
    }
    public static Connection getconn(){
        
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String url="jdbc:jtds:sqlserver://localhost:9433;DatabaseName=SportsUnion2"; 
        String user="sa";
        String psw="123";
        Connection conn=null;
        try {
            conn=DriverManager.getConnection(url,user,psw);
        } catch (SQLException e) {
            e.printStackTrace();    
        }
        return conn;
    }
    public static void closeConn(Connection conn){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public int update(String sql){
        Connection conn=DbConn.getconn();
        Statement stmt=null;
        int count=0;
        //System.out.println(sql);
        try {
            conn.setAutoCommit(false);
            stmt=conn.createStatement();
            //System.out.println(sql);
            count=stmt.executeUpdate(sql);
            conn.commit();
        } catch (SQLException e) {
            //System.out.print(e.getErrorCode());
            try{
                conn.rollback();
            }catch(SQLException e1){
                e1.printStackTrace();
            }
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally{
            DbConn.closeConn(conn);
        }
        return count;
    }
    @SuppressWarnings("unchecked")
    public int query(String sql){
        Connection conn=DbConn.getconn();//這里已經調用了上面的getconn()方法
        dsVector=new Vector();
        Statement stmt=null;
        ResultSet rs=null;
        rowCount=0;
        colCount=0;
        try {
            stmt=conn.createStatement();
            rs=stmt.executeQuery(sql);
            flag=true;
            while(rs.next()){
                flag=false;
                rowCount++;
                ResultSetMetaData rsmd= rs.getMetaData();
                Vector row=new Vector();
                colCount=rsmd.getColumnCount();
                for( int i= 0; i<colCount; i++){
                    row.add(rs.getString(i+1));
                    //System.out.println(rs.getString(i+1));
                }
                dsVector.add(row);
            }
        } catch (SQLException e) {
            System.out.print(e.getErrorCode());
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally{
            DbConn.closeConn(conn);//調用了上面的closeConn()方法
        }
        return rowCount;
    }
//    public static void main(String arg[]){
//        DbConn dbconn=new DbConn();        
//        String sql_class1="select * from class";
//        String sql_assign="select * from news where if_Assign!=0 order by if_Assign desc";
//        String sql_counts1="select * from news";
//        int b=dbconn.query(sql_assign);
//        int a=dbconn.query(sql_class1);
//        int c=dbconn.query(sql_counts1);
//        
//        String[][] A =dbconn.getData(sql_class1);
//        String[][] B=dbconn.getData(sql_assign);
//        String[][] C=dbconn.getData(sql_counts1);
        
//        for(int j=0;j<A.length;j++){
//             System.out.println("AAAA"+A[j][1]);
//        }    
//        for(int j=0;j<B.length;j++){
//             System.out.println("bbbb"+B[j][1]);
//        }    
//        
//        for(int j=0;j<C.length;j++){
//             System.out.println("ccccc"+C[j][1]);
//        }
    }
//}

 該封裝類已經經過改進:http://www.cnblogs.com/shenliang123/archive/2012/05/10/2494874.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM