java查询结果的处理

java查询结果的处理

为了方便使用sql的数据,在查询后mysql会把数据封装到java里面的resultset对象,然后我们需要把resultset里的数据再封装到我们自己创建的对象中,比如Student对象:

public class Student {int number;String name;String gender;Date birthday;String phone;double height;Timestamp reg_time;public void setNumber(int number) {this.number = number;}public void setName(String name) {this.name = name;}public void setGender(String gender) {this.gender = gender;}public void setBirthday(Date birthday) {this.birthday = birthday;}public void setPhone(String phone) {this.phone = phone;}public void setHeight(double height) {this.height = height;}public void setReg_time(Timestamp reg_time) {this.reg_time = reg_time;}public int getNumber() {return number;}public String getName() {return name;}public String getGender() {return gender;}public Date getBirthday() {return birthday;}public String getPhone() {return phone;}public double getHeight() {return height;}public Timestamp getReg_time() {return reg_time;}@Overridepublic String toString() {return "Student{" +"number=" + number +", name=" + name +", gender=" + gender +", birthday=" + birthday +", phone=" + phone +", height=" + height +", reg_time=" + reg_time +'}';}
}

把数据从resultset转到student中要使用rs的get的一系列函数,可以有getint,getstring等等,它的参数是对应的sql的列

public static Student findStudentByNumber(int number) throws SQLException {DriverManager.registerDriver(new Driver());String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root"; //账户String psd="root"; //密码//建立与数据库的连接Connection connection=DriverManager.getConnection(url,user,psd);PreparedStatement ps=connection.prepareStatement("select number,name,gender,birthday,height,phone,reg_time from student where number=?");ps.setObject(1,number);//换行查询后,mysql将数据封装到一个resultset对象中ResultSet rs=ps.executeQuery();////将resultset中的数据重新包装到我没自己的对象Student中,使用起来更方便Student student=new Student();while(rs.next()){   //查看resultset集合中下一组数据存在与否,存在则返回true,循环继续student.setNumber(rs.getInt("number"));student.setName(rs.getString("name"));student.setGender(rs.getString("gender"));student.setBirthday(rs.getDate("birthday"));student.setHeight(rs.getDouble("height"));student.setPhone(rs.getString("phone"));student.setReg_time(rs.getTimestamp("reg_time"));}return student;}

上面只是放在一个student中,然而会有很多的student所以要创建一个student数组,返回的时候返回student数组。

ArrayList students = new ArrayList();while (rs.next()) {   //查看resultset集合中下一组数据存在与否,存在则返回true,循环继续Student student = new Student();  //放在循环里可以保证每次set的是不同的studentstudent.setNumber(rs.getInt("number"));student.setName(rs.getString("name"));student.setGender(rs.getString("gender"));student.setBirthday(rs.getDate("birthday"));student.setHeight(rs.getDouble("height"));student.setPhone(rs.getString("phone"));student.setReg_time(rs.getTimestamp("reg_time"));students.add(student);}

students放在循环外面,student类放在循环里面,每次在循环里新创建一个student对象然后添加进students里。

如果要检查sql中是否存在某个数据,需要设置一个返回值boolean的方法,返回的时候返回resultset.next()这个方法把resultset指向第一组数据,再次调用会指向第二组数据,以此类推,然后返回当前组数据是否存在

private  static boolean checkNum(int number) throws SQLException {DriverManager.registerDriver(new Driver());String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root"; //账户String psd="root"; //密码//建立与数据库的连接Connection connection=DriverManager.getConnection(url,user,psd);PreparedStatement ps=connection.prepareStatement("select number from student where number = ?");ps.setObject(1,number);ResultSet resultSet=ps.executeQuery();return resultSet.next();}

也可以改变查询方法,比如查询number出现的次数count(*) as c,大于等于1说明number存在于这个表中,为0的话说明不存在,返回值返回rs.getint(“c”)

private  static int checkNum(int number) throws SQLException {DriverManager.registerDriver(new Driver());String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";String user="root"; //账户String psd="root"; //密码//建立与数据库的连接Connection connection=DriverManager.getConnection(url,user,psd);PreparedStatement ps=connection.prepareStatement("select count(*) c from student where number = ?");ps.setObject(1,number);ResultSet resultSet=ps.executeQuery();resultSet.next();return resultSet.getInt("c");}

但是next方法是必须要加上的,必须要将指针指向rs的第一组数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超快速排序

title: 超快速排序 date: 2024-01-05 11:51:43 tags: 逆序对 categories: 算法进阶指南 题目大意 解题思路 逆序数是一个序列每一个数的左边有多少比他本身大的值。将一个序列排序完整,最小交换次数即是逆序数之和。使用归并排序的同时,将每一个逆序数求…

C#用StringBuilder高效处理字符串

目录 一、背景 二、使用StringBuilder便捷、高效地操作字符串 三、实例 1.源码 2.生成效果 四、实例中知识点 1.StringBuilder类 (1)构造函数 (2)属性 (3)方法 2.Environment.NewLine 属性 一、…

SurfaceView和TextureView理解相关

一、为什么要使用SurfaceView 我们知道View是通过刷新来重绘视图,系统通过发出VSSYNC信号来进行屏幕的重绘,刷新的时间间隔是16ms,如果我们可以在16ms以内将绘制工作完成,则没有任何问题,如果我们绘制过程逻辑很复杂,…

SSD 颗粒还要涨价50%,入手前小心速度陷阱

大伙应该感受到了,自今年年中开始 SSD 普遍开始了小幅涨价。 但即便涨价到现在,NAND 厂商仍属于倒亏状态... 原因很简单,库存太多。 根据 TrendForce 的报道,主要制造商价格将需要再次上涨 40% 以上才能不亏,而达到盈…

【ZYNQ入门】第五篇、AXI HP口读写数据原理

目录 第一部分、AXI总线的相关知识 1、ZYNQ架构 2、AXI 总线和 AXI 接口以及 AXI 协议 3、AXI 总线与 ZYNQ 的关系 4、AXI 总线介绍 5、AXI 接口介绍 6、AXI 协议介绍 7、AXI高效传输的原因 8、常见总线汇总 9、HP接口写时序配置 10、HP DDR的地址分配 11、缓存一…

QT开源类库集合

QT开源类库集合 一、自定义控件 QSintQicsTableLongscroll-qtAdvanced Docking System 二、图表控件 QwtQCustomPlotJKQTPlotter 三、网络 QHttpEngineHTTP 四、 音视频 vlc-qt 五、多线程 tasks 六、数据库 EasyQtSql 一、自定义控件 1. QSint 源代码地址:QSint&…

如何缓解BOT攻击?分享灵活准确的防御之道

BOT流量在所有互联网流量中的占比过半,而且存在好坏之分。其中“好”的BOT,比如在互联网上搜索和查找内容的BOT,它们是我们不可或缺的帮手。恶意的BOT进行信息数据爬取、薅羊毛等攻击行为,正损害着企业和用户的利益。专业数据统计…

将文本文件导入Oracle数据库的简便方法:SQL Developer

需求 我有一个文本文件dbim.txt,是通过alert log生成的,内容如下: 2020-09-11 2020-09-11 ... 2023-12-03 2023-12-03 2023-12-26我已经在Oracle数据库中建立了目标表: create table dbim(a varchar(16));我想把日志文件导入Or…

Java IO 流面试题

1. Java 中有几种类型的流?JDK 为每种类型的流提供了哪些抽象类以供继承? 参考答案 基础流可以分为:字节流,字符流。字节流继承于 InputStream、OutputStream 抽象类,字符流继承于 Reader 和 Writer 抽象类。在 java.…

若依管理系统部署

本文章仅供参考,由于个软件版本不同可能会有偏差。 登录系统打开cmd 编辑文件 这些文件分别打开,打开后在浏览器会出现若依管理系统后台,输入账号 admin 密码 123456即可进入后台。 本文章仅供参考,由于个软件版本不同可能会有…

Linux内存管理:(六)页交换算法

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 引言 在Linux操作系统中&#x…

synchronized锁的底层原理

synchronized 锁是 Java 中用于实现线程同步的关键字。它提供了一种简单而有效的方式来确保多个线程之间的互斥访问。底层原理可以通过 Java 的内存模型和对象监视器锁(Monitor Lock)来理解。 Monitor结构如下: 在 Java 的内存模型中&#x…

Spring Boot 与 Spring 框架的区别

一、前言 Spring Boot 和 Spring 框架是由 Spring 项目提供的两个关键的技术栈,它们在 Java 开发中扮演着不同的角色。在阐述其区别之前,我们先大致了解下这两个框架 二、Spring 框架 1、背景 Spring 框架是一个全栈的企业应用开发框架,起…

springboot社区养老服务系统设计与实现

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1 研究背景 当…

【Vue.js设计与实现解读-1】

Vue设计与实现阅读-1 1、命令式和声明式2、性能3、虚拟DOM性能4、运行时和编译时5、总结 前言 最近工作清闲了些,想着很久没有看书,Vue.js设计与实现这本书看了好几次都没有读完,趁着这个机会边读边记录一下吧。如果有理解的不正确的地方&…

C#12新功能主构造函数:实用,简洁利落

大家还记得记录(record)类型吗?记录类型很像一个构造函数,那么类可以像record类型一样使用吗?C#12就推出了这样的功能,这就是主构造函数。“现在可以在任何 class 和 struct 中创建主构造函数。主构造函数不再局限于 record 类型。…

安全防御之入侵检测与防范技术

安全防御中的入侵检测与防范技术主要涉及到入侵检测系统(IDS)和入侵防御技术(IPS)。 入侵检测系统(IDS)是一种对入侵行为自动进行检测、监控和分析的软件与硬件的组合系统。IDS通过从计算机网络或系统中的若…

梯度、散度、旋度

目录 梯度Gradient 散度Divergence 旋度Curl 梯度Gradient 即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模); Scalar -> Vector ,表示标量变化最快的方向&…

uniapp子组件向父组件传值

目录 子组件向父组件传值子组件1子组件2 父组件最后 子组件向父组件传值 子组件1 <template><view class"content"><view v-for"(item,index) in list" :key"index">{{item}}</view></view> </template>&…

FPGA——VIVADO生成固化文件,掉电不丢失

VIVADO生成固化文件 (1)加入代码(2)生成bin文件&#xff0c;并且下载 (1)加入代码 设计文件(.xdc)中加入这段代码: set_property CFGBVS VCCO [current_design] set_property CONFIG_VOLTAGE 3.3 [current_design] set_property BITSTREAM.GENERAL.COMPRESS true [current_de…