博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jdbc执行DQL(select)编程及遍历举例
阅读量:3964 次
发布时间:2019-05-24

本文共 2105 字,大约阅读时间需要 7 分钟。

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://mxuki.baihongyu.com/

你可能感兴趣的文章
解决Linux CentOS中cp -f 复制强制覆盖的命令无效的方法
查看>>
wdcpv3升级到v3.2后,多PHP版本共存的安装方法
查看>>
PHP统计当前网站的访问人数,访问信息,被多少次访问。
查看>>
Windows10远程报错CredSSP加密oracle修正
查看>>
Windows server 2016 设置多用户登陆
查看>>
偶然发现的面包屑
查看>>
CentOS 7 下挂载NTFS文件系统磁盘并设置开机自动挂载
查看>>
非插件实现Typecho语法高亮
查看>>
windows 下 netsh 实现 端口映射(端口转发)
查看>>
两个好用的命令行工具 watch 和 rsync
查看>>
信安入门神级书单
查看>>
【IPFS指南】IPFS的竞争对手们(一)
查看>>
docker更换国内镜像
查看>>
CentOS 下 tree命令用法详解
查看>>
docker上传镜像至Registry时https报错解决方法
查看>>
docker下删除none的images
查看>>
Linux提权获取敏感信息方法
查看>>
Ubuntu 16.04开机A start job is running for Raise network interface(5min 4s)解决方法
查看>>
Ubuntu 16.04开机隐藏菜单缩短时间
查看>>
《Linux内核设计与实现》- Linux的进程
查看>>