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

你可能感兴趣的:(jdbc)