public class DbUtils { private static String host = "47.93.******"; private static String port = "3306"; private static String username = "*****"; private static String password = "******"; private static String database = "******"; static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (Exception e) { } } private static Connection getConn() { Connection conn = null; try { String url = "jdbc:mysql://" + host + ":" + port + "/" + database; conn = DriverManager.getConnection(url, username, password); } catch (Exception e) { e.printStackTrace(); } return conn; } public static List<Map<String, Object>> execQuery(String sql, Object[] args) throws Exception { Connection conn = getConn(); PreparedStatement ps = conn.prepareCall(sql); ResultSet rs = null; int count = StringUtils.countMatches(sql, "?"); //變量賦值。。。。。。 for (int i = 0; i < count; i++) { ps.setObject(i, args[i]); } List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); rs = ps.executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); //注意。。metaData.getColumnName 獲取字段名,rs.getObject 獲取屬性 是從 1 開始的,而不是從0 開始 while (rs.next()) { int rowSize = metaData.getColumnCount(); Map<String, Object> map = new HashMap<>(); for (int i = 1; i <= rowSize; i++) { String labelName = metaData.getColumnName(i); Object obj = rs.getObject(labelName); map.put(labelName, obj); } list.add(map); } close(conn, ps, rs); return list; } /** * @param conn * @param ps * @param rs * @throws Exception */ private static void close(Connection conn, PreparedStatement ps, ResultSet rs) throws Exception { rs.close(); ps.close(); conn.close(); }