【问题标题】:SQL check if table contains value?SQL检查表是否包含值?
【发布时间】:2020-10-08 15:56:06
【问题描述】:

我是 SQL 新手。我的目标是,创建一个程序,它应该检查某个表是否具有某个值。我写了这个方法

 public boolean existString(final String query) {
    try {
        final Statement statement = this.conn.createStatement();
        result = statement.executeQuery(query);
        return true;
    } catch(SQLException e) {
        e.printStackTrace();
        return false;
    }
}

如您所见,它是一种执行 SQL 语句的方法。我认为这可能是正确的说法:

String query = "select * from table where column1 = 'checkvalue'"; // of course i need to replace table and column and checkvalue

但是在执行这个语句时,我如何证明它是否成功(查询是否返回一些东西)?如果语句在执行后会返回一些东西,我可以很容易地使用 if 语句来检查。

【问题讨论】:

  • 是的,它会被返回,你可以使用if语句来检查它的值
  • 返回值?或者如果表不包含这个值某个整数,比如 0 ?
  • 除非我弄错了:如果值没有退出,你不应该得到一个 SQLException 而是一个空的结果。因此,您的返回值应该取决于result.next() 的结果,而不是仅在无法执行查询时才会发生的异常。
  • 因此,result.next() 返回一个布尔值。所以,因为我的方法也返回一个布尔值,你的意思是我应该在我的 try-block 中 return result.next()

标签: java mysql sql return contains


【解决方案1】:

如果数据库没有返回任何行,则 SQL 语句可以成功返回,因此如果查询正确但没有匹配项,则使用 SQLException 将无济于事。

public boolean existString(final String query) {
    try {
        final Statement statement = this.conn.createStatement();
        result = statement.executeQuery(query);
        return result.next();
    } catch(SQLException e) {
        e.printStackTrace();
        return false;
    }
}

您应该利用result.next() 尝试将结果指针移动到下一行并返回是否有要返回的行这一事实。这样,如果成功并且有结果,则返回true,如果成功但没有结果,则返回false。如果出现问题,您的异常处理将负责其余部分。

【讨论】:

    【解决方案2】:

    是的,您的方法和 SQL 查询足以进行检查。如果查询中没有行输出,则为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2014-10-08
      • 2021-02-19
      • 2018-11-13
      • 2011-05-05
      • 2013-02-08
      相关资源
      最近更新 更多