为了账号安全,请及时绑定邮箱和手机立即绑定

使用准备好的语句设置表名

使用准备好的语句设置表名

吃鸡游戏 2019-07-12 15:36:06
使用准备好的语句设置表名我试图使用准备好的语句来设置一个表名以从中选择数据,但是在执行查询时,我一直会收到一个错误。错误和示例代码显示在下面。[Microsoft][ODBC Microsoft Access Driver] Parameter 'Pa_RaM000' specified where a table name is required.private  String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [?]"; //?=datepublic Execute(String reportDate){     try {         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");         Connection conn = DriverManager.getConnection(Display.DB_MERC);         PreparedStatement st = conn.prepareStatement(query1);         st.setString(1, reportDate);         ResultSet rs = st.executeQuery();对造成这一切的原因有什么想法吗?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

表名不能用作参数。一定是硬编码。所以你可以这样做:

private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [" + reportDate + "?]";



查看完整回答
反对 回复 2019-07-12
?
FFIVE

TA贡献1797条经验 获得超6个赞

这在技术上是可行的解决办法,但非常糟糕的做法。

String sql = "IF ? = 99\n";sql += "SELECT * FROM first_table\n";
sql += "ELSE\n";sql += "SELECT * FROM second_table";
PreparedStatement ps = con.prepareStatement(sql);

然后,当您想要从Firsttable中选择时,可以使用

ps.setInt(1, 99);

或者如果不是,你就把它设置成别的东西。


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信