【JDBC】------ResultSet(结果集)和常见异常

news2024/11/20 10:20:58

分享第二十条励志语句

宁可自信,也不要盲目悲观。因为自信是一种力量,即使你的自信有些盲目,也无关大局,你可以在实践中调整心态,找到自己的恰当的位置。如果盲目自卑,你就必然失去一切。

 

 

目录

分享第二十条励志语句

1 接收结果集

2 遍历ResultSet结果集中的数据

2.1 常用遍历方法

3 综合案例

3.1 根据列的编号获取数据

3.2 根据列的名称获取数据

二、JDBC常见异常


 

JDBC中执行DQL查询语句后,使用ResultSet存放查询到的结果集数据。

1 接收结果集

ResultSet resultSet = statement.executeQuery(String sql);

//编写SQL语句
String sql = "SELECT * FROM stu;";
//执行SQL语句
ResultSet  resultSet=statement.executeQuery(sql);

2 遍历ResultSet结果集中的数据

ResultSet以表(table)结构进行临时结果的存储,需要通过JDBC API将其中的数据依次获取。

数据行指针:初始位置在第一行数据前,每调用一次boolean next()方法ResultSet的指针向下移动一行,结果为true,表示当前行有数据。

  • resultSet.getXxx(int columnIndex):根据列的编号顺序获取表中字段的数据,编号从1开始,Xxx表示字段类型。

  • resultSet.getXxx(String columnLabel):根据列的名称获取表中字段的数据。

//5、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来
//next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false
while(resultSet.next()){
    //取出元素
    String sid =resultSet.getString(1);
    String sname =resultSet.getString(2);
    int age =resultSet.getInt(3);
    String gender = resultSet.getString(4);
    System.out.println(sid+"-"+sname+"-"+age+"-"+gender);
}

 

 

2.1 常用遍历方法

  • int getInt(int columnIndex) throws SQLException //获得当前行第N列的int值

  • int getInt(String columnLabel) throws SQLException //获得当前行名为cloumnLabel列的int值

  • int getDouble(int columnIndex) throws SQLException //获得当前行第N列的double值

  • int getDouble(String columnLabel) throws SQLException //获得当前行名为cloumnLabel列的double值

  • int getString(int columnIndex) throws SQLException //获得当前行第N列的String值

  • int getString(String columnLabel) throws SQLException //获得当前行名为cloumnLabel列的String值

3 综合案例

查询stu表中的所有数据并遍历显示

3.1 根据列的编号获取数据

 

package cn.bdqn.demo01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SelectJDBCByIndex {

	public static void main(String[] args) {

		try {
			// 1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 2、获取连接对象
			String url = "jdbc:mysql://127.0.0.1:3306/java221804";
			String user = "root";
			String password = "*****";
			Connection connection = DriverManager.getConnection(url, user,password);
			// 3、获取发送SQL语句的对象
			Statement statement = connection.createStatement();
			// 编写SQL语句
			String sql = "SELECT * FROM stu;";
			// 4、执行SQL语句
			ResultSet resultSet = statement.executeQuery(sql);
			// 5、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来
			// next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false
			while (resultSet.next()) {
				// 取出元素
				String sid = resultSet.getString(1);
				String sname = resultSet.getString(2);
				int age = resultSet.getInt(3);
				String gender = resultSet.getString(4);
				System.out.println(sid + "-" + sname + "-" + age + "-" + gender);
			}
			// 6、关闭资源:先开后关,后开先关
			statement.close();
			connection.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

3.2 根据列的名称获取数据

package cn.bdqn.demo01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SelectJDBCByColumnName {

	public static void main(String[] args) {

		try {
			// 1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");// 这个地方Driver后面不要写.class
			// 2、获取连接对象
			String url = "jdbc:mysql://127.0.0.1:3306/java221804";
			String user = "root";
			String password = "*****";
			Connection connection = DriverManager.getConnection(url, user,password);
			// 3、获取发送SQL语句的对象
			Statement statement = connection.createStatement();
			// 编写SQL语句
			String sql = "SELECT * FROM stu;";
			// 5、执行SQL语句
			ResultSet resultSet = statement.executeQuery(sql);
			// 6、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来
			// next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false
			while (resultSet.next()) {
				// 取出元素
				String sid = resultSet.getString("sid");
				String sname = resultSet.getString("sname");
				int age = resultSet.getInt("age");
				String gender = resultSet.getString("gender");
				System.out.println(sid + "-" + sname + "-" + age + "-" + gender);
			}
			// 7、关闭资源:先开后关,后开先关
			statement.close();
			connection.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

二、JDBC常见异常

  • java.lang.ClassNotFoundException:找不到类(类名书写错误、没有导入jar包)

  • java.sql.SQLException:与SQL语句相关的异常(约束错误、表名列名字段名书写错误),建议:在客户端工具中测试SQL语句正确后再复制到代码中

  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column原因:列值String类型没有加单引号

  • Duplicate entry '1' for key 'PRIMARY'原因,主键值已经存在或混乱,更改主键值或清空表

  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column 'password' in原因:可能输入的值类型不对,确定是否插入的元素是对应的值的类型正确

今天的分享就到此结束了

创作不易点赞评论互关三连

 

 

 

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

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

相关文章

汇编语言之母逝世,71岁时还和儿子合写神经网络论文

凯瑟琳・布斯被称为汇编语言之母,具体来说就是她创造了第一个“汇编语言”。 在1940年代中期,第一台通用电子计算机最初并没有用于代码的内部存储。如果我们想要用它编程,就要操纵数千个开关和电缆,而这些开关和电缆所在的位置&am…

GDP-L-岩藻糖,鸟苷二磷酰岩藻糖,Guanosine 5′-diphospho-β-L-fucose sodium salt

产品名称:GDP-L-岩藻糖,鸟苷二磷酰岩藻糖 英文名称:Guanosine 5′-diphospho-β-L-fucose sodium salt 英文别名 [(2R,3S,4R,5R)-5-(2-Amino-6-oxo-1,6-dihydro-9H-purin-9-yl)-3,4-dihydroxytetrahydro-2-furanyl]methyl (3S,4R,5S,6S)-3,…

周末小技 | 开发一个Feeds流系统——写扩散模式

点个关注👆跟腾讯工程师学技术导语 | 本文主要针对Feeds流进行介绍,将从Feeds流的演变入手,带你一步步了解Feeds流,而后学习如何从开发角度入手,对其进行建模,抽象出Feeds流常见的架构,最终搭建…

Python开发6年,整理的《Python从入门到精通学习笔记》免费下载

前言 首先明确一点:为什么要学习python? 我说几个最主要的。 1.简单易学,入门友好 python其实就是英文句子,你只要能够认识基本的英文单词,你就可以非常熟练地使用python。 (文末送读者福利&#xff09…

[附源码]计算机毕业设计水果管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

苹果app开发流程详解​

苹果App Store上传应用流程详解,在向AppStore提交应用之前,开发者首先要成为苹果iOS开发者项目的成员,每年向苹果缴纳99美元或199美元的费用(具体申请方法后期更新)。​ 免688开发IOS应用,根据apple的规定…

信号驱动任务执行(pause、sigsuspend函数)

信号驱动任务指的是通过信号来驱动任务的执行,每发送一次信号,任务就执行一次。实现该目的所需的函数就是 pause 或者 sigsuspend,pause和sigsuspend函数可以暂停当前进程,直至收到信号才会继续运行之后的程序。 目录 1、认识 pa…

实战:kubeadm方式搭建k8s集群(containerd)-2022.12.5(成功测试-超详细)【荐】

实战:kubeadm方式搭建k8s集群(containerd)-2022.12.5(成功测试-超详细)【荐】 写在开头 语雀原文阅读效果最佳,原文地址:实战:kubeadm方式搭建k8s集群(containerd)-2022.12.5(成功测试-超详细)【荐】 语雀 《实战:ku…

Liunx进程间信号

Linux进程间信号 文章目录Linux进程间信号1.信号的理解1.1 对信号的认识1.2 为什么要有信号1.3 信号概念1.4 查看系统定义的信号的方法1.5 信号的处理方式2.产生信号的方法2.1 通过终端按键发送信号2.2 通过系统函数发送信号2.3 通过软件条件发送信号2.4 通过硬件异常发送信号2…

股市资讯天宇优配|政策利好叠加竞争格局向好 机构做多建材板块

近来,受房地产板块上涨带动,建材板块也敞开一轮反弹行情,东方雨虹、三棵树、科顺股份等体现抢眼。在组织看来,房地产职业近期利好政策频出,商场对建材职业后期需求的忧虑将会消解。另一方面,在过去一年多的…

计算机总线详解(数据总线、地址总线、控制总线)

文章目录1 概述2 总线分类2.1 数据总线 Data Bus2.2 地址总线 Address Bus2.3 控制总线 Control Bus3 扩展3.1 常考题3.2 百度百科 - 总线 Bus1 概述 总线(Bus)是计算机各种功能部件之间传送信息的 公共通信干线如果说 主板(Mother Board&am…

Hadoop集群安装和搭建

Hadoop集群安装和搭建 前言    Hadoop是一个开源的、可运行与Linux集群上的分布式计算平台,用户可借助Hadoop存有基础环境的配置(虚拟机安装、Linux安装等),Hadoop集群搭建,配置和测试。 一、虚拟机的安装  VMware …

.sqlite后缀文件转为sql文件

第一步 安装sqlite3 1.官网下载 https://www.sqlite.org/download.html ,因为我是win64的,需要下载图片这两个安装包 2.将解压下载的安装包 首先创建一个文件夹,比如放在D盘,在D盘创建一个文件目录sqlite,路径最终为D:\sqlit…

二本蒟蒻的带牌退役感言(感谢两年来的acm经历)

TP20年10月20年 - 21年期间22年开始,大二下暑假后,怎么就大三了,时间好快第47届icpc杭州站润~20年10月 一个高考发挥失常的蒟蒻来到了化大。他带着不甘和兴奋走进了大学的殿堂,励志要好好学习天天向上。 可是很快现实就给予了充…

Eolink如何解决API测试痛点

文章目录前言一、API测试的痛点二、eolink可以解决什么?2.1 Eolink是什么?2.2 Eolink可以解决什么?三、环境安装以及实践操作3. 1 下载安装3.2 创建项目四、支持所有自动化接口测试场景4.1 单API接口测试4.2 API变更智能通知4.3 API历史版本对…

Kube-OVN子网

子网是 Kube-OVN 中的一个核心概念和基本使用单元,Kube-OVN 会以子网来组织 IP 和网络配置,每个 Namespace 可以归属于特定的子网, Namespace 下的 Pod 会自动从所属的子网中获取 IP 并共享子网的网络配置(CIDR,网关类…

代码随想录刷题Day55 | 392. 判断子序列 | 115. 不同的子序列

代码随想录刷题Day55 | 392. 判断子序列 | 115. 不同的子序列 392. 判断子序列 题目: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形…

阿里又出神作:最新Spring Cloud Alibaba全解手册限时开源,手慢无

有一说一,网上的那些Spring Cloud 学习资料大多是老版本那套东西,学习 Spring Cloud Alibaba 才是目前最正确的姿势!Spring Cloud Alibaba 基于 Spring Cloud 构建,提供了对 Alibaba 组件的封装而已,其最顶层的抽象还是…

牛客Top101 JS合并两个排序的列表

描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: 0 ≤n≤1000,-1000≤节点值≤1000 要求:空间复杂度 O(1),时间复杂度 O(n) 如输入{1,3,5},{…

[附源码]计算机毕业设计基于Springboot设备运维平台出入库模块APP

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…