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

编程入门 行业动态 更新时间:2024-10-27 06:25:31
本文介绍了如何在使用JDBC的SELECT查询中使用动态表名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我的语法我喜欢这个

String sql2 =SELECT * FROM?WHERE Patient_ID =?; pst = conn.prepareStatement(sql2); System.out.println(SQL before values is set+ sql2); System.out.println(TestPrint阶段1中接收到的表/测试名称的值+ tblName); System.out.println(TestPrint阶段1中接收的测试名称的值+键); //值正确输出,但未在查询中设置 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); //他们打印命令被启动以打印面板}

问题是当我运行这个我收到一个错误说.....你有和SQL语法错误附近?WHERE Patient_ID =?

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

值不在sql2中设置

解决方案

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

String sql =SELECT * FROM` + tblName +WHERE Patient_ID =?; pst = conn.prepareStatement(sql); pst.setLong(1,key); ResultSet rs = pst.executeQuery(sql);

I have 5 or table table to query from \

my syntax i like this

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 }

The problem is when i run this i get an error saying ".....you have and error in SQL syntax near ? WHERE Patient_ID = ?"

When i output the sql using system.out.println(sql2);

values are not set in sql2

解决方案

When you prepare a statement, the database constructs an execution plan, which it cannot do if the table is not there. In other words, placehodlers can only be used for values, not for object names or reserved words. You'd have to rely on Java to construct your string in such a case:

String sql = "SELECT * FROM `" + tblName + "` WHERE Patient_ID = ?"; pst = conn.prepareStatement(sql); pst.setLong(1, key); ResultSet rs = pst.executeQuery(sql);

更多推荐

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

本文发布于:2023-10-21 17:07:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1514830.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:动态   如何在   JDBC   SELECT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!