当使用java + mysql时,我提出了两种遍历数据集的方法
在sql中使用游标和存储过程,然后在java中执行它以查找用户是否存在。
在java中使用“resultSet”查找用户是否存在。
谁能告诉我使用哪种方法有效?为什么?
答案 0 :(得分:3)
"光标"是一个SQL概念。 ResultSet
是Java中的编程类型。 "光标"使用数据库语义,并通过SQL访问。 ResultSet
使用类型/对象语义,可通过Java访问。 "光标"直接控制SQL查询提取的数据量。 ResultSet
通常不会,但会控制向Java程序公开的数据量。 SQL查询提取的数据可能有也可能没有,而不是ResultSet
中显示的数据。
SQL结构,如" cursor"应该只在数据上下文中使用。它是数据库的一部分。当您使用JDBC查询数据时,它不会阻止您需要ResultSet
。 ResultSet
是Java代码与查询结果交互的方式。
"光标"用于数据操作。这只是数据操作所关心的事情。在检索查询数据时,Java代码需要ResultSet
更加消逝。这只是您的客户端代码所关心的事情。数据库无法识别ResultSet
。在几乎所有情况下,您的Java代码都不会识别游标。
答案 1 :(得分:1)
您应该避免使用最好的存储过程,因为它们比Java应用程序维护起来要复杂得多,并且它们特定于目标数据库。由于Statement
/ PreparedStatement
,您应该只对因执行查询而无法管理的复杂用例使用存储过程。
换句话说,99.9 %
当时,你最好的选择是#2。