public List<Map> executeQuery(String sql) {
		List<Map> result = new ArrayList<Map>();
		if (this.conn == null)
			getConnection();
		try {
			stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(sql);
			ResultSetMetaData rsmd = rs.getMetaData();
			int columnCount = rsmd.getColumnCount();
			while (rs.next()) {
				Map data = new HashMap();
				for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) {
					data.put(rsmd.getColumnName(columnIndex + 1), rs.getString(columnIndex + 1));
				}
				result.add(data);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			closeConnection(conn);
		}
		return result;
	}