JDBC连接数据库

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
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.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;

import javax.el.ELContext;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;


public class JdbcByPropertiesUtil {
    private static String filePath = "jdbc.properties"; 
    private static JdbcByPropertiesUtil instance = null;
    
    public JdbcByPropertiesUtil() {
		super();
	}

	/**
     * 单例方式创建对象
     * @return
     */
    public static JdbcByPropertiesUtil getInstance() {
        if (instance == null) {
            synchronized (JdbcByPropertiesUtil.class) {
                if (instance == null) {
                    instance = new JdbcByPropertiesUtil();
                }
            }
        }
        return instance;
    }
       
    /**
     * 读取properties文件中 数据库连接信息
     * @param filePath
     * add 2012-4-17
     */
    public  Properties readPropertiesFile(){
		String dir = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
		dir = dir.substring(0,dir.indexOf("classes")+8);
    	String realFilePath = dir+filePath; 
        Properties pros = new Properties();  
        try {  
            InputStream is = new BufferedInputStream(new FileInputStream(realFilePath));  
            pros.load(is); 
        } catch (Exception e) {  
            e.printStackTrace();
        }
        return pros;
    } 
    
    /**
     * 注册驱动
     * 静态代码块 用于启动web服务器时加载驱动
     */
    static{
    	JdbcByPropertiesUtil util = new JdbcByPropertiesUtil();
        Properties pros = util.readPropertiesFile();
        String className = (String) pros.get("className");
        try {
            Class.forName(className).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
    
	/**
	 * 获取数据库连接
     * modify 2012-4-17
	 * @param con
	 * @return
	 */
	public Connection getConnection(){
        Properties pros = readPropertiesFile();
        String url = (String) pros.get("url");
        String user = (String) pros.get("user");
        String password = (String) pros.get("password");
        Connection conn = null;
		try {
			conn = DriverManager.getConnection(url,user,password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
       
    /**
     *  依次关闭ResultSet、Statement、Connection
     *  若对象不存在则创建一个空对象
     * @param rs
     * @param st
     * @param pst
     * @param conn
     */
    public void close(ResultSet rs,Statement st,Connection conn){
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally{
                if(st != null){
                    try {
                        st.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    } finally{
                        if(conn != null){
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }
    }

    public static List<Map<String, Object>> convertList(ResultSet rs) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        try {
            ResultSetMetaData md = rs.getMetaData();
            int columnCount = md.getColumnCount();
            while (rs.next()) {
                Map<String, Object> rowData = new HashMap<String, Object>();
                for (int i = 1; i <= columnCount; i++) {
                    rowData.put(md.getColumnName(i), rs.getObject(i));
                }
                list.add(rowData);
            }
        } catch (SQLException e) {
        // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (rs != null)
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
        }
    }
        return list;
    }
    
    public static Map<String, Object> convertMap(ResultSet rs){
        Map<String, Object> map = new TreeMap<String, Object>();
        try{
            ResultSetMetaData md = rs.getMetaData();
            int columnCount = md.getColumnCount();
            while (rs.next()) {
                for (int i = 1; i <= columnCount; i++) {
                    map.put(md.getColumnName(i), rs.getObject(i));
                }
            }
        } catch (SQLException e){
            e.printStackTrace();
        } finally {
            try {
                if (rs != null)
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return map;
    }
    
    /**
     * 新增、修改、删除、查询记录(也可以改为有结果集ResultSet返回的查询方法)
     * @param sql
     * @throws  
     */
    public static Boolean execute(String sql){
        JdbcByPropertiesUtil jbpu = getInstance();
        Connection conn = null;
        PreparedStatement pst = null;
        try {
            conn = jbpu.getConnection();
            conn.setAutoCommit(false);
            pst = conn.prepareStatement(sql);
            pst.execute();
            conn.commit();
        } catch (Exception e) {
            try {
            	conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            return false;
        } finally{
            //Statement st = null;
            ResultSet rs = null;
            jbpu.close(rs, pst, conn); 
        }
		return true;
    }
 
    
    public static JSONObject executeAll(String [] fields,JSONArray array,String table,String type,String id ) {
    	JSONObject json = new JSONObject();
        JdbcByPropertiesUtil jbpu = getInstance();
        Connection conn = null;
        PreparedStatement pst = null;
        try {
            conn = jbpu.getConnection();
            conn.setAutoCommit(false);
            for (Object object : array) {
				JSONObject obj = (JSONObject) object;
				String str1 = "";
				String str2 = "";
				for (int i = 0; i < fields.length; i++) {
					str1 = str1 +fields[i]+",";
					if(obj.get(fields[i]).toString().equals("null")){
						str2 = str2 +obj.get(fields[i])+",";
					}else{
						str2 = str2 +"'"+obj.get(fields[i])+"'"+",";
					}
				}
				if(type.equals("2")){
					String sql2 = "delete from "+table+" where "+id+" = '"+obj.get(id)+"'";
					System.out.println(sql2);
					conn.prepareStatement(sql2).execute();
				}
				String sql = "insert into "+table+" ("+str1.substring(0,str1.length()-1)+") values ("+str2.substring(0,str2.length()-1)+")";
				System.out.println(sql);
				conn.prepareStatement(sql).execute();
			}
            conn.commit();
            
        } catch (Exception e) {
            try {
            	conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
                
            }
            json.put("mes",e.getMessage());
            json.put("merge", false);
            
            return json;
        } finally{
            //Statement st = null;
            ResultSet rs = null;
            jbpu.close(rs, pst, conn); 
        }
        json.put("merge", true);
        json.put("mes", "保存成功");
		return json;
    }
    
    public static List<Map<String, Object>> executeByList(String sql){
        JdbcByPropertiesUtil jbpu = getInstance();
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        List<Map<String, Object>> list = null;
        try {
            conn = jbpu.getConnection();
            conn.setAutoCommit(false);
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            list = JdbcByPropertiesUtil.convertList(rs);
        } catch (Exception e) {
        	e.printStackTrace();
            try {
            	conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            return list;
        } finally{
            //Statement st = null;
            
            jbpu.close(rs, pst, conn); 
        }
        return list;
    }
    
    public static Map<String,Object> executeByChar(String sql){
        JdbcByPropertiesUtil jbpu = getInstance();
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        List<Map<String, Object>> list = null;
        Map<String,Object> map = new HashMap<String, Object>();
        try {
            conn = jbpu.getConnection();
            conn.setAutoCommit(false);
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            list = JdbcByPropertiesUtil.convertList(rs);
            map.put("data", list);
        } catch (Exception e) {
        	e.printStackTrace();
            try {
            	conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            return map;
        } finally{
            //Statement st = null;
            
            jbpu.close(rs, pst, conn); 
        }
        return map;
    }
    
    public static String executeByString(String sql){
        JdbcByPropertiesUtil jbpu = getInstance();
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        String str = "";
        try {
            conn = jbpu.getConnection();
            conn.setAutoCommit(false);
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            while (rs.next()) {
            	str=rs.getString(1);
            }
        } catch (Exception e) {
        	e.printStackTrace();
            try {
            	conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            return str;
        } finally{
            //Statement st = null;
            jbpu.close(rs, pst, conn); 
        }
        return str;
    }
    //测试方法
    public static void main(String[] args) {
		List<Map<String, Object>>  list = JdbcByPropertiesUtil.executeByList("select TRANS_month,sum(TRD_AMT) TRD_AMT,sum(NET_COMM) NET_COMM,sum(MARKET_RATE) MARKET_RATE,sum(NET_COMM_RATE) NET_COMM_RATE,sum(CUST_NUM),sum(CUST_ASSET) CUST_ASSET,sum(TRD_ASSET) TRD_ASSET,sum(NEW_CUST_NUM) NEW_CUST_NUM,sum(NEW_CUST_ASSET) NEW_CUST_ASSET,sum(TRD_CUST_NUM) TRD_CUST_NUM,sum(TRD_CUST_ASSET) TRD_CUST_ASSET,sum(FI_CUST_NUM) FI_CUST_NUM,sum(FI_CUST_ASSET) FI_CUST_ASSET,sum(HKT_CUST_NUM) HKT_CUST_NUM,sum(HKT_CUST_TRD_AMT) HKT_CUST_TRD_AMT,sum(HKT_CUST_ASSET) HKT_CUST_ASSET,sum(SO_CUST_NUM) SO_CUST_NUM,sum(SO_CUST_ASSET) SO_CUST_ASSET,sum(SO_CUST_TRD_AMT) SO_CUST_TRD_AMT,sum(IA_NUM) IA_NUM,sum(IA_CUST_NUM) IA_CUST_NUM,sum(IA_ASSET) IA_ASSET,sum(CM_NUM) CM_NUM,sum(CM_CUST_NUM) CM_CUST_NUM,sum(CM_ASSET) CM_ASSET,sum(BROKER_NUM) BROKER_NUM,sum(BROKER_CUST_NUM) BROKER_CUST_NUM,sum(BROKER_ASSET) BROKER_ASSET from RPT_BD_CHART where TRANS_month >=201501 and TRANS_month<=201512 group by TRANS_month");
		System.out.println(list.size());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值