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

posted on 2012-04-19 10:26  发表是最好的记忆  阅读(11123)  评论(0编辑  收藏  举报