3

我有 5 个或表要从 \ 查询

我的语法我喜欢这个

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
}

问题是,当我运行它时,我收到一条错误消息“.....您附近的 SQL 语法有错误?WHERE Patient_ID = ?”

当我使用 system.out.println(sql2); 输出 sql 时

值未在 sql2 中设置

4

3 回答 3

6

当您准备一条语句时,数据库会构建一个执行计划,如果表不存在,它就无法执行此计划。换句话说,占位符只能用于,不能用于对象名称或保留字。在这种情况下,您必须依靠 Java 来构造您的字符串:

String sql = "SELECT * FROM `" + tblName + "` WHERE Patient_ID = ?";

pst = conn.prepareStatement(sql);
pst.setLong(1, key);
ResultSet rs = pst.executeQuery();
于 2014-02-09T21:01:11.067 回答
0
String sqlStatment = "SELECT * FROM " + tableName + " WHERE Patient_ID = ?";

PreparedStatement preparedStatement = conn.prepareStatement(sqlStatment);
preparedStatement.setint(1, patientId);
ResultSet resultSet = preparedStatement.executeQuery();
于 2020-08-03T13:49:09.593 回答
-1

public void getByIdEmployer() 抛出 SQLException { Connection con = null;

    try {
        con = jdbcUtil.connectionDtls();
        PreparedStatement ptst = con.prepareStatement(getById);
        ptst.setInt(1, 4);
        ResultSet res = ptst.executeQuery();
        while (res.next()) {
            int empid = res.getInt(1);
            System.out.println(empid);
            String name = res.getString(2);
            System.out.println(name);
            int salary = res.getInt(3);
            System.out.println(salary);
            String location = res.getString(4);
            System.out.println(location);
        }

    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        con.close();
    }
}
于 2021-11-25T12:56:39.477 回答