JDBC JdbcUtils含CRUD

111

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public final class JdbcUtils {
    private static String url = "jdbc:mysql://localhost:3306/jdbc";
    private static String user = "root";
    private static String password = "xxxxxx";

    public static void main(String[] args) {
        // String sql = "UPDATE `user` set money=money+10 WHERE `name` =? ";
        // Object[] parms = new Object[]{"name1"};
        // int a1 = executeUpdate(sql, parms);
        // System.out.println(a1);
        String sql = "select * from user";
        List<Map<String, Object>> list = executeQuery(sql, null);
        for (Map<String, Object> map : list) {
            for (String key : map.keySet()) {
                System.out.println("Key=" + key + "\t value=" + map.get(key));
            }
            System.out.println();
        }
    }

    public static List<Map<String, Object>> executeQuery(String sql, Object[] parms) {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        try {
            conn = JdbcUtils.getConnection();
            st = conn.prepareStatement(sql);
            if (parms != null && parms.length > 0) {
                for (int i = 0; i < parms.length; i++) {
                    st.setObject(i + 1, parms[i]);
                }
            }
            rs = st.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                Map<String, Object> map = new HashMap<>();
                for (int i = 0; i < rsmd.getColumnCount(); i++) {
                    String columnLabel = rsmd.getColumnLabel(i + 1);
                    Object columnValue = rs.getObject(columnLabel);
                    map.put(columnLabel, columnValue);
                }
                list.add(map);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.free(rs, st, conn);
        }
        return list;
    }

    public static int executeUpdate(String sql, Object[] parms) {
        int res = -1;
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet set = null;
        try {
            conn = getConnection();
            pst = conn.prepareStatement(sql);
            for (int i = 0; i < parms.length; i++) {
                pst.setObject(i + 1, parms[i]);
            }
            res = pst.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            free(set, pst, conn);
        }
        return res;
    }

    private JdbcUtils() {
    }

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new ExceptionInInitializerError(e);
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

    public static void free(ResultSet rs, Statement st, Connection conn) {
        try {
            if (rs != null)
                rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (st != null)
                    st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/kikyoqiang/p/11772871.html
今日推荐