no resultSet set producted得问题

本文记录了在使用Servlet操作SQL Server 2000时遇到的noResultSetsetproducted异常问题及解决方案。作者在进行数据插入操作时错误地使用了executeQuery方法,该方法用于获取结果集而非执行更新操作。通过改用executeUpdate方法成功解决了问题。
用servlet链接sql2000,做插入数据得时候抛出异常:no resultSet set producted。多次检查没有发现问题所在,数据也成功插入后来在朋友提示下发现自己使用得是executeQuery而插入数据是没有resultset返回得。应该采用executeUpdate。看了对数据库得掌握仅凭以前学vb时得基础是远远不够得。还需磨练
### ResultSetSet 的区别 在 Java 数据库操作中,`ResultSet` 和 `Set` 是两种不同的概念,分别用于不同的场景和目的。以下是它们的主要区别: #### 1. **定义与用途** - **ResultSet**: - `ResultSet` 是 JDBC API 中的一个接口,表示从数据库查询返回的结果集[^1]。 - 它是一个动态的、可滚动的数据结构,通常包含多行记录和列,类似于一个表格。 - 结果集中的数据是从数据库中检索出来的,因此其内容直接依赖于数据库的状态。 - **Set**: - `Set` 是 Java 集合框架中的一个接口,表示一组不重复的元素[^3]。 - 它主要用于存储程序中的对象集合,且不允许重复元素。 - `Set` 是内存中的数据结构,与数据库无关。 #### 2. **数据来源** - **ResultSet**: - 数据来源于数据库查询结果。 - 数据的变化可能反映数据库的变化(取决于 `ResultSet` 的类型,如 `TYPE_SCROLL_SENSITIVE` 或 `TYPE_SCROLL_INSENSITIVE`)[^2]。 - **Set**: - 数据来源于程序运行时的内存操作。 - 数据的变化完全由程序控制,与外部数据库无直接关联。 #### 3. **功能特性** - **ResultSet**: - 提供了丰富的游标操作方法(如 `next()`、`previous()`、`absolute(int row)` 等),允许用户在结果集中移动[^2]。 - 支持更新操作(如 `updateRow()`、`insertRow()` 等),但需要满足特定条件(如驱动支持、单表查询等)[^3]。 - 是只读或可更新的,具体行为取决于创建时的参数配置。 - **Set**: - 不提供游标操作,只能通过迭代器或流进行遍历。 - 主要用于存储唯一值,不支持更新数据库的操作。 #### 4. **性能与使用场景** - **ResultSet**: - 性能受数据库连接和查询的影响,可能涉及网络延迟。 - 适用于需要直接与数据库交互的场景。 - **Set**: - 性能取决于集合的实现(如 `HashSet`、`TreeSet` 等)。 - 适用于需要在内存中处理唯一数据的场景。 #### 5. **示例代码** 以下是比较两者使用的简单示例: ```java // ResultSet 示例 try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "user", "password"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT id, name FROM users")) { while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name); } } catch (SQLException e) { e.printStackTrace(); } // Set 示例 Set<String> names = new HashSet<>(); names.add("Alice"); names.add("Bob"); names.add("Alice"); // 重复值不会被添加 for (String name : names) { System.out.println(name); } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值