gpt4 book ai didi

java - 通过 JDBC 使用结果集插入新行

转载 作者:行者123 更新时间:2023-11-30 08:45:43 25 4
gpt4 key购买 nike

我有几个关于使用 JDBC 的结果集插入新行的问题。你能看看吗?谢谢。

在K&B7第895页中,有一段示例代码如下:

1 String query = "SELECT AuthorID, FirstName, LastName FROM Author";
2 ResultSet rs = stmt.executeQuery(query);
3 rs.next();
4 rs.moveToInsertRow();
5 rs.updateInt("AuthorID", 1055);
6 rs.updateString("FirstName", "Tom");
7 rs.updateString("LastName", "McGinn");
8 rs.insertRow();
9 rs.moveToCurrentRow();

问题一:能否删除第3行,使光标指向第一行上方,然后再将光标移动到插入行?这是允许的吗?

问题2:执行第8行后,新插入的行在数据库的什么位置?无论游标在移动到插入行之前指向结果集中的哪个位置,它是否总是作为最后一行附加在数据库的末尾?

问题3:执行第8行后,如果我想再插入一行,是否需要再添加一行"rs.moveToInsertRow();"在代码中?

问题4:在第7行和第8行之间,如果我添加了一个新行“rs.next();”,会不会导致在运行时抛出SQLException,因为当游标在时不允许使用next()方法插入行?

最佳答案

Question 1: Can I delete line 3, so that the cursor is pointing above the first row before we move the cursor to the insert row? Is this allowed?

是的。另请注意,查询可能已返回零行,在这种情况下,您无论如何都无法成功推进游标。

Question 2: After executing line 8, where is the new row inserted in the database? Is it always appended in the end of the database as the last row no matter where the cursor was pointing in the result set before it was moved to the insert row?

“在数据库的什么地方?”这不是一个真正有意义的问题。如果您的意思是“在结果集中的什么位置”,答案很可能无处ResultSet 为您提供了一种将行插入数据库的方法,但在执行查询时,任何此类行都不会出现在结果中。

Question 3: After executing line 8, if I want to insert another new row, do I need to add another line "rs.moveToInsertRow();" in the code?

没有。

Question 4: Between the line 7 and line 8, if I add a new line "rs.next();", will this lead to throw SQLException in runtime because next() method is not allowed when the cursor is in the insert row?

这是未指定的,这在实践中意味着“不是一个好主意”。我可以看到几个似是而非的结果:

  • 抛出一个SQLException
  • rs.next() 返回 false 不改变任何东西
  • 该行为等同于调用 rs.moveToCurrentRow(),然后调用 rs.next()
  • 该行为等同于调用 rs.moveToCurrentRow(),然后是 rs.next(),然后是 rs.moveToInsertRow()

这不一定是一个详尽的 list 。很可能,不同的 JDBC 驱动程序以不同方式处理这种情况,这是避免这种情况发生的一个很好的理由。

关于java - 通过 JDBC 使用结果集插入新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158156/

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