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
希望多多交流,多多关注,共同成就梦想