【问题标题】:How to execute Query Select that WHERE clause using ARRAY Variable in JAVA如何使用 JAVA 中的 ARRAY 变量执行查询选择 WHERE 子句
【发布时间】:2017-10-13 02:40:12
【问题描述】:

我有一个像这样的代码输入数组,变量名是 "output" 假设变量“输出”是 Array 中 Column_Name 的列表。我想要得到的真正输出是我将在我设置的 Jtable 中显示的 Table_name 和 Column_Name 的列表。要做的主要事情是如何使用所有“输出”值执行这些查询,这样我就可以获得它的每个 Table_Name

String[] output= example.split(",");

在我得到一个数组列表后,我想将数组值一个一个地执行到 SQL 语句中,处理代码是这样的

for (String outputInsert : output) {
    try {
        rs2 = stmt.executeQuery("SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA ='"+sqldb+ "' AND COLUMN_NAME = '"+outputInsert+"';");           
    } catch (SQLException ex) {
        Logger.getLogger(Retrieve.class.getName()).log(Level.SEVERE, null, ex);
    }
} result rs2;

但我没有得到我想要的结果来显示每个执行的 SQL 语句的所有值

【问题讨论】:

  • 您能否更具体地说明您得到了什么输出以及您的记录器显示了什么?如果在这种情况下也显示输入也会很好,我怀疑问题出在拼写错误/引号中。
  • rs2 的结果是什么;和结束?!

标签: java mysql sql arrays select


【解决方案1】:

您需要使用 addBatch 和 executeBatch 命令而不是 executeQuery。请参考此帖Execute multiple SQL statements in java

stmt.addBatch(query1);
stmt.addBatch(query2);

stmt.executeBatch();

【讨论】:

    【解决方案2】:

    如果给定列值有一个值列表,而不是为每个值访问数据库,请尝试在 sql 查询中使用 IN 子句。 注意:IN 子句中可以传递的最大值有一个限制。

    【讨论】:

    • 这并没有解决问题 - 它与效率无关,我怀疑在这种情况下它会显着改善
    • 我想如果不是这样的话如何将数组值传递给选择查询,那么请你澄清一下
    • 阅读问题本身,而不是标题。她一直没有得到有效的 rs2。
    • 可能是它没有回答如何执行数组列表,但它为我的查询使用 IN 提供了一个新的视角。非常感谢,我会试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2013-09-04
    • 2015-11-11
    相关资源
    最近更新 更多