Cómo usar el nombre de la tabla dinámica en la consulta SELECT usando JDBC

Tengo 5 o tabla de tabla para consultar desde \ mi sintaxis me gusta esto

El problema es que cuando ejecuto esto recibo un error que dice "..... ¿tiene un error en la sintaxis SQL cerca? WHERE Patient_ID =?"

String sql2 = "SELECT * FROM ? WHERE Patient_ID = ?";

pst = conn.prepareStatement(sql2);

        System.out.println("SQL before values are set "+sql2);
        System.out.println("The values of table/test name recieved in TestPrint stage 1 "+tblName);
        System.out.println("The values of test name recieved in TestPrint stage 1 "+key);
        // values are outputted correctly but are not getting set in the query

        pst.setString(1, tblName);
        pst.setLong(2, key);
ResultSet rs2 = pst.executeQuery(sql2);

        while(rs2.next()){

            String ID = rs2.getString("ID");

            jLabel35.setText(ID);
            jLabel37.setText(ID);
            jLabel38.setText(ID);
       // them print command is initiated to print the panel
}

Cuando imprimo el sql usando system.out.println (sql2);

los valores no se establecen en sql2

los marcadores de posición de mysql solo pueden reemplazar VALUES. no puede usar marcadores de posición para nombres de tabla / campo u otras directivas "meta" de sql. p.ej.

Respuestas a la pregunta(1)

Su respuesta a la pregunta