jdbc执行DQL(select)编程及遍历举例

news/2024/11/9 14:19:55

1.遍历结果集:

在这里插入图片描述
【总结】
两种思想:
面向接口编程的思想
ORM编程思想:(object relational mapping)

  • 一个数据表对应一个java类
  • 表中的一条记录对应java类的一个对象
  • 表中的一个字段对应java类的一个属性

两种技术:

1.使用结果集的元数据:ResultSetMetaData

getColumnCount():获取列数
getColumnLabel():获取列的别名
//说明:如果sql中没给字段其别名,getColumnLabel()获取的就是列名
  1. 反射的使用(①创建对应的运行时类的对象 ② 在运行时,动态的调用指定的运行时类的属性、方法)

查询的图示:
在这里插入图片描述

2.代码举例

/**
 * 针对于customers表的通用的查询操作
 * @param sql 要执行的SQL语句
 * @param args 多少个占位符
 */
public Customer queryForCustomer(String sql,Object...args){
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
        conn = DBUtil.getConnection("test");

        ps = conn.prepareStatement(sql);

        for (int i = 0; i < args.length; i++) {
            ps.setObject(i + 1,args[i]);
        }

        rs = ps.executeQuery();
        //获取结果集的元数据 :ResultSetMetaData
        ResultSetMetaData rsmd = rs.getMetaData();
        //通过ResultSetMetaData获取结果集中的列数
        int columnCount = rsmd.getColumnCount();
        if(rs.next()){
//方法一:// 下标取出,程序不健壮
/*String ename = rs.getString(1);
String job = rs.getString(2);
String sal = rs.getString(3);*/

//方法二:字段名称取出,当某一个字段名称重命名后,则用新的名称查询
/*String ename = rs.getString("ename");
String job = rs.getString("job");
String sal = rs.getString("s");*/

// 以指定的格式取出
//String ename = rs.getString("ename");
//String job = rs.getString("job");
//Double sal = rs.getDouble("s  ");
            Customer cust = new Customer();
            for (int i = 0; i < columnCount; i++) {
                //获取每个列的列值:通过ResultSet
                Object columValue = rs.getObject(i + 1);

                //通过ResultSetMetaData
                //获取列的列名:getColumnName() --不推荐使用
                //获取列的别名:getColumnLabel()
                String columnLabel = rsmd.getColumnLabel(i + 1);

                //通过反射,将对象指定名columnName的属性赋值为指定的值columnValue
                Field filed = Customer.class.getDeclaredField(columnLabel);
                filed.setAccessible(true);
                filed.set(cust,columValue);
            }
            return cust;
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        DBUtil.close(conn,ps,rs);
    }
    return null;
}

http://www.niftyadmin.cn/n/2145650.html

相关文章

ajax省市联动 java,[Java教程]在JavaScript文件中用ajax方法实现省市区的三级联动_星空网...

在JavaScript文件中用ajax方法实现省市区的三级联动2017-03-1501.JavaScript Document$(document).ready(function(e) {加载三个下拉列表$("#sanji").html("");加载显示数据加载省份FillSheng();加载市FillShi();加载区FillQu();当省份选中变化&#xff0c…

JS计算两个时间差的问题

计算两个时间差的问题 function getDateIsMatching(){var pactbegindate$("#loanbegindate").datetimebox("getValue");var pactenddate$("#loanenddate").datetimebox("getValue");var loanterm$("#loanterm").val();var l…

jdbc中Statement接口实现CRUD操作(了解)

1.Statement接口实现CRUD package loey.java1;import java.sql.*; import java.util.HashMap; import java.util.Map; import java.util.Scanner;/*** 实现功能&#xff1a;* 1、需求* 模拟用户登录功能的实现* 2、业务描述* 程序运行的时候&#xff0c;提供一个输…

matlab ode45输出数值解,matlab 中ode45的源代码如何看懂

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求常微分方程的数值解 ode45方法的源代码怎么看懂呢&#xff1f;四百多行 如何理解这些代码的核心思想 以方便未来自己使用呢&#xff1f;求大神指点迷津 感激不尽function varargout ode45(ode,tspan,y0,options,varargin)%ODE45…

sql oracle nvl,将多个列使用NVL – Oracle SQL

早安我心爱的sql向导和巫师,我想要在3个表中替换3列数据.目前我正在使用NVL功能,但这只限于两列.参见下面的例子&#xff1a;SELECT ccc.case_id,NVL (ccvl.descr,ccc.char)) char_valFROM case_char ccc,char_value ccvl,lookup_value lval1WHEREccvl.descr() ccc.valueAND c…

jdbc中PreparedStatement替换Statement实现CRUD与Blob类型的操作

1.PreparedStatement的理解&#xff1a; ① PreparedStatement 是Statement的子接口② An object that represents a precompiled SQL statement.③ 可以解决Statement的sql注入问题&#xff0c;拼串问题 PreparedStatement和Statement对比&#xff1f; Statement存在SQL注入…

创建RHEL-server-7.0操作系统

创建RHEL-server-7.0操作系统 1.双击进入VMware 2.点击创建虚拟机 3.点击自定义&#xff0c;然后点击下一步 4.选择12.0的版本&#xff0c;兼容性大。然后点击下一步 5.选择Linux&#xff08;L&#xff09;.版本选择Red Had Eenterprise Liunx 7 64 位 点击下一步 6.选择稍后安…

oracle挑库发放次数,EBS OM发运状态 wsh_delivery_details.RELEASED_STATUS

wsh_delivery_details这个表用来存储记录销售订单的物料的发运明细信息&#xff0c;字段RELEASED_STATUS标识着该发运的状态&#xff0c;通常有值R,S,Y,C这几个状态。通过一脚本查下这个字段的含义&#xff1a;SELECT Lookup_Type,Lookup_Code,Meaning,Description,View_Applic…