【问题标题】:Use Variable in SQL stement instead of TableName在 SQL 词干中使用变量而不是表名
【发布时间】:2017-01-02 18:47:05
【问题描述】:

我有两个具有相同属性的数据库表。我想使用从表 n 第二个更新表中读取的两个 sql 语句。

String tableName = "";
String value = request.getParameter("PageId");
if(value=="Alflah"){
    tableName = "PARKTABLEONE";
}
if(value=="ParkN"){
    tableName = "PARKTABLE";
}

一个陈述:

ResultSet rs= st.executeQuery("Select * From  " +tableName+ " WHERE ID = \'"+ login + "\' ");

第二条语句:

String query = "update " + tableName + " set Place1 = ?, Place2 = ? WHERE ID = \'"+ login + "\'";

所以,我想在这里使用 TableName 变量。 例如,如果表名是 Alflah,则应从 alflah 读取 有没有可能?请纠正我的错误在哪里??

【问题讨论】:

  • 那么问题出在哪里?尝试后会发生什么?
  • 除此之外,您不应该像这样比较字符串 - 请参阅 stackoverflow.com/questions/513832/…
  • 旁注:与tableName 无关,您的代码对SQL injection attacks 和无害的非攻击值开放。使用参数化查询。
  • @JonSkeet:很好看,这可能就是问题所在。我已经投票了,但你可以欺骗它。
  • 运行此代码时出现语法错误:在第 1 行第 17 列遇到“WHERE”。根本原因

标签: java sql jsp netbeans


【解决方案1】:

TableName 是空的,所以它在第 17 列显示错误。如果 WHERE 从 17 开始,那么它必须是空的,只需计算字符数

【讨论】:

  • 它现在可以工作了,我已经在之前的jsp中设置了tableName值,然后使用request.getParameter("tableName");
猜你喜欢
  • 2011-10-03
  • 2020-10-16
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 2017-02-26
  • 2013-12-07
相关资源
最近更新 更多