• 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

  • 相关阅读:
    (转载)链表环中的入口点 编程之美 leecode 学习
    leecode single numer
    leecode 树的平衡判定 java
    Let the Balloon Rise
    Digital Roots
    大数加法,A+B
    小希的迷宫
    畅通工程
    lintcode596- Minimum Subtree- easy
    lintcode597- Subtree with Maximum Average- easy
  • 原文地址:https://www.cnblogs.com/shenliang123/p/2456665.html
Copyright © 2020-2023  润新知