gpt4 book ai didi

java - 删除数据库中的条目并验证它是否已被删除 - 删除后仍然找到该条目

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:40 27 4
gpt4 key购买 nike

我有一个连接到 MySQL 数据库的 JDCB 程序,可以执行添加表、添加条目、删除条目等操作。

我在测试中遇到问题,我想执行这些步骤:

  1. 在我的数据库表中添加一个条目。
  2. 检查条目是否存在。
  3. 删除条目。
  4. 验证条目是否不再存在。

这是我的代码:

testConn = database.getConn();

try {
String addEntry = "INSERT INTO HighScore(ID, username, " +
"Score) VALUES" +
"(ID, 'testAddEntry',333)";

st = testConn.createStatement();
st.execute(addEntry);


String findEntry = "SELECT * FROM HighScore WHERE " +
"username='testAddEntry'";

st.execute(findEntry);

assertTrue(st.execute(findEntry));

String deleteEntry = "DELETE FROM HighScore WHERE " +
"username='testAddEntry'";

st.execute(deleteEntry);

String findEntryNow = "SELECT * FROM HighScore WHERE " +
"username='testAddEntry'";

System.out.println(st.execute(findEntryNow));
assertFalse(st.execute(findEntryNow));

} catch (SQLException e) {
e.printStackTrace();
}

问题是 assertFalse(st.execute(findEntryNow)); 应该返回 false,但它返回 true。当我检查数据库时,条目不存在。 (我尝试只添加和删除它,以便 100% 有效)。

问题是我想运行一个查找它但验证该条目不存在的执行程序。

最佳答案

您没有说您使用的是哪个版本的 MySQL,而是来自 MySQL Connector/J 5.1 文档

If you do not know ahead of time whether the SQL statement will be a SELECT or an UPDATE/INSERT, then you can use the execute(String SQL) method. This method will return true if the SQL query was a SELECT, or false if it was an UPDATE, INSERT, or DELETE statement. If the statement was a SELECT query, you can retrieve the results by calling the getResultSet() method. If the statement was an UPDATE, INSERT, or DELETE statement, you can retrieve the affected rows count by calling getUpdateCount() on the Statement instance.

这表明如果您使用 execute 来运行 SELECT,您将始终为真。

来自本页 https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-usagenotes-statements.html

您实际上需要获取结果集并确认它是空的。

关于java - 删除数据库中的条目并验证它是否已被删除 - 删除后仍然找到该条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59269052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com