如何将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
原创粉丝点击