如何以正确的方式处理结果集?
How to Process ResultSets the right way?
从 Sqlite 数据库处理 Java 中的结果集的正确方法是什么?
目前我有一个 "SQL" class 可以执行所有 SQL 查询。
如果另一个 class 需要一些数据,它会调用 SQL class 的方法,SQL class 获取 ResultSet 将其存储在数组或其他东西,returns 数组。
但这有点愚蠢,我知道这肯定不是正确的方法。
那么如何在不使用这种讨厌的方法的情况下将 ResultSet 的数据导入我的其他 classes?
我挣扎的一点是,一旦语句关闭,ResultSet 就会关闭,所以我无法 return ResultSet。
我很确定我有一个非常大的概念问题,但我不知道如何解决它。
您应该将结果集映射到 class 和 return class。
例如,如果您有一个 User
class 和一个带有 name
列的 user
table
List<User> results = new ArrayList<User>();
while (resultSet.next()) {
User user = new User();
user.setName(rs.getString("name");
results.add(user);
}
谈平淡时JDBC常见做法
- 定义您的程序将运行的抽象。
- 将这些抽象映射到数据库结构。
- 为这些抽象实现 类 - 实体。
- 在您的代码中提供一个特殊层来为这些实体执行 CRUD 操作。
对于上述设计,建议使用 DAO 模式 - 它允许您为逻辑上分离的代码部分分离数据库访问(例如,分离实体的分离 DAO),从而导致松散耦合。
在ResultSet
处理方面:
- 只有 DAO 应该进行
ResultSet
处理
DAOs 中的 ResultSet
s 应该被翻译成 类 表示程序抽象并且只有这些 类 应该从 DAOs 返回
从 Sqlite 数据库处理 Java 中的结果集的正确方法是什么?
目前我有一个 "SQL" class 可以执行所有 SQL 查询。
如果另一个 class 需要一些数据,它会调用 SQL class 的方法,SQL class 获取 ResultSet 将其存储在数组或其他东西,returns 数组。
但这有点愚蠢,我知道这肯定不是正确的方法。
那么如何在不使用这种讨厌的方法的情况下将 ResultSet 的数据导入我的其他 classes?
我挣扎的一点是,一旦语句关闭,ResultSet 就会关闭,所以我无法 return ResultSet。
我很确定我有一个非常大的概念问题,但我不知道如何解决它。
您应该将结果集映射到 class 和 return class。
例如,如果您有一个 User
class 和一个带有 name
列的 user
table
List<User> results = new ArrayList<User>();
while (resultSet.next()) {
User user = new User();
user.setName(rs.getString("name");
results.add(user);
}
谈平淡时JDBC常见做法
- 定义您的程序将运行的抽象。
- 将这些抽象映射到数据库结构。
- 为这些抽象实现 类 - 实体。
- 在您的代码中提供一个特殊层来为这些实体执行 CRUD 操作。
对于上述设计,建议使用 DAO 模式 - 它允许您为逻辑上分离的代码部分分离数据库访问(例如,分离实体的分离 DAO),从而导致松散耦合。
在ResultSet
处理方面:
- 只有 DAO 应该进行
ResultSet
处理
DAOs 中的 ResultSet
s 应该被翻译成 类 表示程序抽象并且只有这些 类 应该从 DAOs 返回