当前位置: 首页 > 知识库问答 >
问题:

为什么execute()在空表上返回true?

颜高朗
2023-03-14

通过下面的代码片段,我试图运行一个查询,该查询更新数据或将新数据插入名为justpinged的表中。该表包含一个名为nodesthatjustpingedlastpingedat的列。如果nodesthatjustpinged中已经有一个节点,则更新lastpingedat中以毫秒为单位的时间。否则,将插入新的节点信息。

问题是,下面的代码片段无法将数据插入到数据库的表中。原因是声明

boolean duplicateExists = searchToEliminateDuplicates.execute();
String searchQuery = "select NodesThatJustPinged from JustPinged where NodesThatJustPinged = '" + nodeInfo + "'";
PreparedStatement searchToEliminateDuplicates = connection.prepareStatement(searchQuery);
boolean duplicateExists = searchToEliminateDuplicates.execute();

if(duplicateExists) {
    // update the LastPingedAt column in the JustPinged table 
    String updateQuery = "update JustPinged set LastPingedAt='" + pingedAt + "' where NodesThatJustPinged = '" + nodeInfo + "'";
    PreparedStatement updateStatement = connection.prepareStatement(updateQuery);
    updateStatement.executeUpdate();System.out.println("If statement");
} else {
    // make a new entry into the database
    String newInsertionQuery = "insert into JustPinged values('" + nodeInfo + "','" + pingedAt + "')";
    PreparedStatement insertionStatement = connection.prepareStatement(newInsertionQuery);
    insertionStatement.executeUpdate();System.out.println("else statement");              
}

那么应该如何编辑代码,以便更新重复值并插入新值呢?

共有1个答案

孟永望
2023-03-14

返回零行的select语句仍将返回resultset--只是在调用next()时立即返回false。您需要检查返回的ResultSet中的行数。

 类似资料:
  • 我和我的同事有一个bug,这是由于我们假设调用的空流将返回。 当然,这是我们假设而不阅读文档的错误。但我不理解的是,为什么空流的默认行为返回。这样做的理由是什么?与(相反返回false)一样,该操作以命令方式使用,脱离单子,可能用于语句。考虑到这些事实,是否有任何理由让空流上的默认为对于大多数用途是可取的?

  • 我有点困惑php函数布尔瓦尔是如何工作的。考虑以下几点

  • 问题内容: 在空字符串上分割将返回大小为1的数组: 考虑这返回空数组: 请解释 :) 问题答案: 出于同样的原因 和 将返回一个大小为2的数组。将第一个匹配之前的所有内容作为第一个元素返回。

  • 问题内容: 在CSS中定义时,总是返回空。 但是,如果您在该元素中设置样式,则可以获取style.display详细信息。 我的问题不同。 内联样式不是编码的好方法。因此,我们总是在CSS中分配样式。但是,为什么在提供style属性而不是通过element 时却显示为空?JavaScript是否特别无法读取style属性? 您可以在下面检查,即使我提供了,所有样式属性都为空。 为什么? 问题答案:

  • 问题内容: 我和我的同事有一个错误,这是由于我们假设会返回空流调用而导致的。 当然,假定和不阅读文档是我们的错。但是我不明白的是为什么空流的默认行为会返回。这是什么原因呢?像(相反地返回false)一样,此操作以命令式方式使用,它离开了monad,并且可能在语句中使用了。考虑到这些事实,是否有任何理由使大多数用途都需要默认为空流? 问题答案: 这就是所谓的虚无事实。空集合的所有成员都满足您的条件;

  • 调用以下命令时,GHCI返回一个错误:由于使用“print”而产生的不明确类型变量“f0”、“b0”会阻止约束(Show(f0 b0))得到解决。 据我所知,这是因为我的表达式的类型是(数字b,函数f)= 然而,List的Functor实例将fmap定义为map,并且map的定义忽略了函数参数,以防第二个参数是[],从而简单地返回[]。这应该意味着我的表达式应该简单地返回[],而不管我应用了多少f