如何将PreparedStatement查询得到的结果集存储起来--方法一:采用对象数组
来源:互联网 发布:wps表格怎么刷新数据 编辑:程序博客网 时间:2024/05/18 02:13
如何将PreparedStatement查询得到的结果集存储起来--方法一:采用对象数组
在使用PreparedStatement执行查询Sql语句时,返回的结果集有时候只有一条(根据主键查询),有时候有多条(根据非主键查询)。查询的结果可以采用ResultSet进行接收,然后采用next()方法直接输出其中的数据即可实现。
下面就是这种情况:没有将ResultSet中的数据存储起来,而是直接输出
<span style="font-size:18px;">package jdbcPrograms;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import commonDBConnection.ConnectToDataBase;public class ResultSetGetContentsToList {/* * 将查询的结果集存放进预先做好的对象中--这次是存放进 对象 数组中 */public static void main(String[] args) {</span>
<span style="font-size:18px;"><span></span>//这里注意:调用了这篇我的另一篇博客<a target=_blank href="http://blog.csdn.net/u013871100/article/details/48895307" target="_blank">JDBC链接MySql</a>Connection conn=ConnectToDataBase.getDataBaseConnection();String sqlQuery="SELECT id,deptName,deptDesc from tb_department WHERE deptDesc=?";PreparedStatement ppst=null;String strQuery="销售支持";try {ppst=conn.prepareStatement(sqlQuery);ppst.setString(1, strQuery);} catch (SQLException e) {System.out.println("创建数据库预编译语句发生异常: "+e.getMessage());}ResultSet rs=null;try {rs=ppst.executeQuery();} catch (SQLException e) {System.out.println("查询数据库语句发生异常: "+e.getMessage());}//获取返回的ResultSet内容try {while (rs.next()) {System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getString(3)+"--");}} catch (SQLException e) {System.out.println("获取返回的结果集发生异常: "+e.getMessage());}finally{try {ppst.close();} catch (SQLException e) {System.out.println("关闭预编译语句发生异常: "+e.getMessage());}try {conn.close();} catch (SQLException e) {System.out.println("关闭数据库链接语句发生异常: "+e.getMessage());}}}}</span>如果现在需要将ResultSet中的结果集存储起来以备后续使用,则得需要想办法,下面是办法一,下一篇是办法二
方法一采用的“反射”的味道:即根据查询的数据库表(这里是tb_department表)中的字段,新建一个类(这里是Department类),类中的相应的属性跟数据库的“一一映射”。
下面是数据库表tb_department:
对应的,设置一个类Department:
package jdbcPrograms;public class Department {private Integer id;private String deptName;private String deptDesc;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName = deptName;}public String getDeptDesc() {return deptDesc;}public void setDeptDesc(String deptDesc) {this.deptDesc = deptDesc;}}
之后就可以了,下面是存储ResultSet结果集中的结果的代码
package jdbcPrograms;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import commonDBConnection.ConnectToDataBase;public class ResultSetGetContentsToList {/* * 将查询的结果集存放进预先做好的对象中--这次是存放进 对象 数组中 */public static void main(String[] args) {Connection conn=ConnectToDataBase.getDataBaseConnection();String sqlQuery="SELECT id,deptName,deptDesc from tb_department WHERE deptDesc=?";PreparedStatement ppst=null;String strQuery="销售支持";try {ppst=conn.prepareStatement(sqlQuery);ppst.setString(1, strQuery);} catch (SQLException e) {System.out.println("创建数据库预编译语句发生异常: "+e.getMessage());}ResultSet rs=null;try {rs=ppst.executeQuery();} catch (SQLException e) {System.out.println("查询数据库语句发生异常: "+e.getMessage());}int rRows=0;//rs.beforeFirst();try {rs.last();rRows=rs.getRow();//System.out.println("行数: "+rRows);} catch (SQLException e1) {System.out.println("获取结果集的行数发生异常: "+e1.getMessage());}Department[] dept=new Department[rRows];try {//rs相当于一个指针一样---指向了返回的结果集的第一行之前,而在之前已经遍历过到最后了,所以现在需要返回到原先的位置rs.beforeFirst();} catch (SQLException e1) {System.out.println("rs回溯指针发生异常: "+e1.getMessage());}//获取返回的ResultSet内容try {int i=0;while (rs.next()) {//System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getString(3)+"--");dept[i]=new Department();dept[i].setId(rs.getInt(1));dept[i].setDeptName(rs.getString(2));dept[i].setDeptDesc(rs.getString(3));i += 1;}} catch (SQLException e) {System.out.println("获取返回的结果集发生异常: "+e.getMessage());}finally{try {ppst.close();} catch (SQLException e) {System.out.println("关闭预编译语句发生异常: "+e.getMessage());}try {conn.close();} catch (SQLException e) {System.out.println("关闭数据库链接语句发生异常: "+e.getMessage());}}//终于可以将获取的ResultSet结果集存起来了---这次是以对象集合“反射”意味在里面//System.out.println(dept.length);for (Department department : dept) {System.out.println(department.getId()+"--"+department.getDeptName()+"--"+department.getDeptDesc());}}}下一篇介绍采用列表List存储ResultSet返回的结果集
0 0
- 如何将PreparedStatement查询得到的结果集存储起来--方法一:采用对象数组
- 如何将PreparedStatement查询得到的结果集存储起来--方法二:采用列表List
- Hibernate 查询返回结果集为对象数组后的取值方法
- 给定只包含正数的数组,给出一个方法,将数组中的数拼接起来,得到的数,是最大的。
- php将结果集匹配成索引数组、关联数组、对象的区别&&location对象
- 如何将linq查询的结果 转换为DataTable,最简单的实现方法
- 如何利用QQ营销的方法将用户圈起来?
- 使用hibernate的criteria分页查询后得到数组对象
- 如何在存储过程B中,对存储过程A的结果集进行查询
- 将普通sql查询的将结果集转换指定的对象,然后对象存在list中并返回
- 将查询数据库获得的结果集转化为 二维数组
- 如果将Java中从数据库查询到的结果集转换为Json数组形式
- hibernate将普通查询的sql结果集转成对象列表
- 使用JDBC将查询结果集保存为对象时需要注意的问题
- sql2000如何将查询结果放入一张新建的表格
- 如何对存储过程返回的结果进行条件查询
- 如何在存储过程内部获得查询的结果
- 如何对存储过程返回的结果进行条件查询
- Ubuntu源问题(换源软件源更新源)
- tomcat的详细安装步骤
- windows-linux
- Leetcode Clone Graph
- [LeetCode Problem]TwoSum
- 如何将PreparedStatement查询得到的结果集存储起来--方法一:采用对象数组
- BIOS入门之我见-开篇
- CodeVS2319 最近最远点对
- 安卓控件使用系列35:ListView列表控件显示表单的使用方法2
- win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决
- 把sshkey添加到git agent上
- RPC协议、http协议、tcp/ip协议、udp协议、socket协议以及soap协议都有什么相同点和不同点
- (ZT) CHS conversion
- CCS3.3的使用2___统计程序运行的时间