当前位置: 首页 > 面试题库 >

如何在使用JDBC的SELECT查询中使用动态表名

朱令
2023-03-14
问题内容

我有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中设置


问题答案:

当您准备一条语句时,数据库将构造一个执行计划,如果表不存在,则该计划无法执行。换句话说,Placehodlers只能用于
,而不能用于对象名称或保留字。在这种情况下,您将不得不依靠Java来构造您的字符串:

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

pst = conn.prepareStatement(sql);
pst.setLong(1, key);
ResultSet rs = pst.executeQuery(sql);


 类似资料:
  • 问题内容: 我想使用表变量而不是临时表,但是我的主要查询构造是动态的。动态查询用单引号引起来,所以我该如何从@TableVariable中获取数据。我不想删除动态查询,因为稍后会添加一些参数。 例如,以下是错误代码,其中我已将表变量写入动态查询中..... 在这方面帮助我。 提前致谢。 问题答案: 试试这个 :

  • 我们的应用程序使用Dropwizard和JDBI来处理对Postgres数据库的查询。 通常,我们会有一个不同的数据库用于生产和生产,但现在我们正在与一个新系统集成,这将共享用于生产和产品的相同数据库,但使用了一组不同的表。 例如,我们将有表用户和users_stg 有没有一种方法可以将表名以动态方式传递给查询,以便我们可以在属性文件中设置表名? 当前查询的示例 所需查询示例 当然,@Bind不会

  • 我尝试为特定的查找我的实体。我的实体知道一周中的几天作为集合,知道两个作为开始和结束。 我的实体是这样的: 当我运行调用方法的测试时,我得到以下信息: 我搜索了一些关于如何在中正确使用panache的信息,但不幸的是,我没有找到任何信息。

  • 问题内容: 我有此表变量声明后跟一个查询: 并定义如下: 当我在SQL Management Studio中针对SQL Server 2005 Express运行它时,得到以下信息: 消息208,第16级,状态1,第24行 无效的对象名称“ @CurrentItems”。 实际的问题是什么,我该如何解决? 问题答案: 您已经别名了,所以只需使用: 还要看看您的查询中是否有类似的内容。什么是CU?您

  • 如何使用@ Query(value = " SELECT * FROM do _ not _ track WHERE(user _ id = 7)AND(' 2022-06-25 ' BETWEEN FROM _ date AND to _ date)OR(' 2022-06-30 ' BETWEEN FROM _ date AND to _ date)",nativeQuery = true)在

  • 问题内容: 我正在使用PDO,并希望执行以下操作: PDO是否允许我这样绑定表名和列名?这 似乎是 允许的,但是却让我周围的报价参数,即使我用PDO :: PARAM_INT或PDO :: PARAM_BOOL作为数据类型。 如果这不起作用,如何安全地对变量进行转义,以便可以在查询中对它们进行插值? 问题答案: 不幸的是,您不能按列名绑定参数。 您可以尝试动态创建SQL命令: 只要确保对参数/变量