用PreparedStatement查询一列的值时查出来的都是列名?

这是我建的表:
图片说明
我想把uid这一列查出来,但在用PreparedStatement时遇到了问题
这是我的代码:

public String[] selectColumn(String colName) throws SQLException {
        String[] tmp = new String[100]; //用来暂存数据
        int num = 0; //记录数据个数
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = getConnection(); //获取链接
            String sql = "SELECT ? FROM member_info";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, colName);
            rs = pstmt.executeQuery();
            int index = 0;
            while(rs.next()) {
                 tmp[index++] = rs.getString("uid");
                 num++;
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            release(rs,pstmt,conn);
        }
        String[] result = new String[num]; //返回的结果数组
        for (int i=0; i<num; i++) {
            result[i] = tmp[i];
        }
        return result;
    }

selectColum("uid")运行出来的结果是:
图片说明

但我用Statement却能查出正确结果
这是代码(几乎一样,就是把PreparedStatemen改成了Statement)

public String[] selectColumn() throws SQLException {
        String[] Uid = new String[100];
        int num = 0;
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = getConnection();
            String sql = "SELECT uid FROM member_info";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            int index = 0;
            while(rs.next()) {
                 Uid[index++] = rs.getString("uid");
                 num++;
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            release(rs,stmt,conn)
        }
        String[] result = new String[num];
        for (int i=0; i<num; i++) {
            result[i] = Uid[i];
        }
        return result;
    }

图片说明

求大神解决一下

用prepareStatement注入的时候 执行的时候搜索的字段都是 SELECT 'uid ' FROM member_info 这样返回的全部都是uid 得写成 SELECT uid FROM member_info才可以

String sql = "SELECT ? FROM member_info"
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, colName); //这个可能写进去可能不对,可能变为字符串了
//sql 可能变为了 SELECT 'uid ' FROM member_info

你试下
String sql = "SELECT uid FROM member_info"
pstmt = conn.prepareStatement(sql);