Result的使用

        在 java数据 编程 中,ResultSet是在 Connection基础 上生成 的,因此 Connection关闭 时,ResultSet也被关闭 了,而不关闭 Connection的话, 就会造成 连接 资源 的浪费 ,因此 前面 所学的 数据 库操作 程序 ,都是将数据 读取 出来 以后 ,存放 到集 合中,然后 返回 值,供调用 程序 使用 。

在这个练习 中,也可以 使用 Result接口 来完成 数据 的返回 ,ResultSet接口 是 java.sql.ResultSet接口 ,而 Result是 java.servlet.jsp.jstl.sql.Result java.servlet.jsp.jstl.sql.Result java.servlet.jsp.jstl.sql.Result java.servlet.jsp.jstl.sql.Result java.servlet.jsp.jstl.sql.Result java.servlet.jsp.jstl.sql.Result java.servlet.jsp.jstl.sql.Resultjava.servlet.jsp.jstl.sql.Result 提供的。

1、使用Result返回值

public class BookDAO_Properties extends ConnectionProperties {
	
	/**
	 * 取得书籍集合信息结果的方法
	 * @return
	 */
	public Result getBookResult(){
		Result result=null;
		getConnection();
		String sql="select * from books";
		try {
			pStmt=conn.prepareStatement(sql);
			rs=pStmt.executeQuery();
			//将ResultSet转换为Result
			result=ResultSupport.toResult(rs);
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			closeAll();
		}
		return result;
	}
}


2、测试Result

public class ResultTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		BookDAO_Properties bp=new BookDAO_Properties();
		Result result=bp.getBookResult();//得到Result的对象
		//Result 是一个行列式的集合
		//result.getRowCount()取得Result中的行数
		for(int i=0;i<result.getRowCount();i++){
			SortedMap<String,Object> row=result.getRows()[i];//取到的行集合为一个Map集合数组,逐一得到数组中的每一行
			System.out.println("书号:"+row.get("isbn")+",书名:"+row.get("title"));//根据key值得到行Map集合中相对应的值
		}
	}
}


结果:


当前提供的引用内容并未涉及 `Result` 的具体使用方法[^1]。然而,在许多编程语言和框架中,`Result` 通常用于表示操作的结果状态以及可能返回的数据或错误信息。以下是关于 `Result` 的一般性描述及其常见用途: ### 什么是 Result ? 在某些编程环境中(例如 Rust 或 Java 的第三方库),`Result` 是一种通用模式,用来封装函数执行的成功或失败情况。它通常包含两个主要部分: - **成功数据**:当操作顺利完成时返回的实际数据。 - **错误信息**:如果发生异常,则提供详细的错误原因。 这种设计可以有效替代传统的抛出异常机制,使程序逻辑更加清晰可控。 ### 使用场景 以下是一些典型的适用场景: 1. 文件读取/写入操作; 2. 数据解析过程中的验证处理; 3. API 请求响应分析; 4. 数据库查询结果管理等。 下面将以伪代码形式展示一个简单的例子来帮助理解其基本用法。 ### 示例代码 #### 假设环境为某种支持泛型的语言 (如 Kotlin / Scala) ```kotlin sealed class Result<out T> { data class Success<out R>(val value: R) : Result<R>() data class Failure(val exception: Exception) : Result<Nothing>() } fun divide(a: Int, b: Int): Result<Double> = try { if (b != 0) { Result.Success((a.toDouble() / b)) } else { throw IllegalArgumentException("Division by zero is not allowed.") } } catch (e: Exception) { Result.Failure(e) } // 调用示例 fun main() { val result = divide(10, 2) when(result){ is Result.Success -> println("Result of division: ${result.value}") is Result.Failure -> println("Error occurred: ${result.exception.message}") } } ``` 上述代码展示了如何通过自定义的 `Result` 构造安全地执行潜在危险的操作——即整数除法,并妥善处理可能出现的零分母问题。 ### 总结 虽然现有引用未提及具体细节[^2],但从行业实践来看,合理运用此结构有助于提升软件质量与可维护性。希望以上解释能够解答您的疑问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值