无聊编写的一个简单的JDBC封装类

package org.xwblog.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author David Xiong
 * time: 2014
 */
@SuppressWarnings("unused")
public class ConnDB {
 
     //创建数据库连接
     private Connection conn = null;


     //创建操作对象
     private Statement stmt = null; //正常的sql语句的编译格式
     private PreparedStatement pst = null; //sql语句的参数是问号形式的编译形式
 
     //参数集合
     private Object[] params=null;
 
     //创建结果集对象
     private ResultSet rs = null;
 
     //获取数据库连接的必须(MySQL为例)
     private static final String userName="root";
     private static final String password="admin";
     private static final String url="jdbc:mysql://localhost:3306/dbName";
     private static final String driverName="com.mysql.jdbc.Driver";
 
     /**
      * 方式一
      * 加载数据库驱动程序
     */
 static{
          try {
               Class.forName(driverName);


          } catch (ClassNotFoundException e) {


               e.printStackTrace();
               System.err.println("数据库驱动加载失败!");
  }

  }
 /**
  * 建立数据库连接
  * @return
  */
 public Connection getConnection(){
     try {
          conn = DriverManager.getConnection(url, userName, password);
   
     }catch (SQLException e) {
          e.printStackTrace();
     }
     return conn;
 }
 
// /**
//  * 方式二
//  */
// public ConnDB(){
//  try {
//   Class.forName(driverName);
//   conn = DriverManager.getConnection(url, userName, password);
//   System.out.println("连接成功");
//  } catch(ClassNotFoundException cnfe){
//   cnfe.printStackTrace();
//  } catch (SQLException e) {
//   e.printStackTrace();
//  }
// }
 
 
 /**
  * 执行save,update,delete
  * @param sql
  * @param params
  * @return
  */
 public int executeUpdate(String sql,Object[] params){
  
  int row=0;
  try{
      if(params!=null && params.length>0){
    
            pst=conn.prepareStatement(sql);//执行增,删,改语句

            for(int i=0;i<params.length;i++){
                 pst.setObject(i+1, params[i]);
            }


           row=pst.executeUpdate();
      }else {
    
            stmt=conn.createStatement();//构建sql语句的发送对象
            row=stmt.executeUpdate(sql);//执行增,删,改语句
      }
  }catch(SQLException e){
           e.printStackTrace();
  }
  return row;
 }
 
 /**
  * 执行select
  * @param sql
  * @param params
  * @return
  */
 public List executeQuery(String sql,Object[] params){


  List list = new ArrayList();
  try{
       if(params!=null&&params.length>0){
           pst = conn.prepareStatement(sql);
           for(int i=0;i<params.length;i++){
                pst.setObject(i+1, params[i]);
           }
           rs = pst.executeQuery();
       }else{
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
       }
   
       ResultSetMetaData rsmd = rs.getMetaData();


       //获取结果集中一共有多少列
       int count = rsmd.getColumnCount();
   
       String [] colName = new String[count];
       //将每一列的名字保存在数组中
       for(int i=0;i<count;i++){
            colName[i] = rsmd.getColumnName(i+1);
       }


       //循环获取数据集中的信息
       while(rs.next()){
            Map row = new HashMap();
            for(int i=0;i<count;i++){
                 row.put(colName[i], rs.getObject(colName[i]));
            }
            list.add(row);
       }
  }catch(Exception e){
       e.printStackTrace();
  }finally{
       closeAll();
  }
  return list;
 }

 /**
  * 关闭连接
  */
 public  void closeAll(){
  try {
       if(rs!=null){
            rs.close();
       }
       if(stmt!=null){
            stmt.close();
       }
       if(conn!=null){
            conn.close();
       }
  } catch (SQLException e) {
       e.printStackTrace();
  }
 }
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值