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

article/2025/10/1 6:08:07

分享第二十条励志语句

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

 

 

目录

分享第二十条励志语句

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,如果不存在元素返回falsewhile (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,如果不存在元素返回falsewhile (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://chatgpt.dhexx.cn/article/LU7xTPWc.shtml

相关文章

JDBC的ResultSet

一、ResultSet[结果集] 1.表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 2.ResultSet对象保持一个光标指向其当前的数据行,最开始光标在第一行。 3.next方法将光标移动到下一行,由于在ResultSet对象中没有更多行时返回fal…

Java中,ResultSet 的用法

•在Java中,获得ResultSet的总行数的方法有以下几种。 第一种:利用ResultSet的getRow方法来获得ResultSet的总行数 Java代码 Statement stmt con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet r…

ResultSet结果集的使用

一、ResultSet结果集的简介 查询数据库时,返回的是一个二维的结果集,我们需要用到ResultSet来遍历结果集,获取每一行的数据。 二、使用ResultSet遍历查询结果 boolean next() 将光标从当前位置向前移一行。 String  getString(int column…

ResultSet用法集锦

ResultSet用法集锦 添加链接描述 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.结果集读取数据…

ResultSet的介绍与使用

相关文章 jdbc连接以及出现的异常处理Jdbc工具类ResultSet的介绍与使用jdbc中的sql注入PreparedStatement的介绍与解决sql注入jdbc管理事务 ResultSet ResultSet是我们使用jdbc连接时,查询的一个返回结果集,ResultSet resultSet stmt.executeQuery(sql),下面就使用…

JDBC之ResultSet接口

ResultSet介绍 对数据库的查询操作,一般需要返回查询结果。在程序中,JDBC为我们提供了ResultSet接口来专门处理查询结果集。 由于ResultSet是JDBC的一个接口,先来简单了解一下JDBC: JDBC:Java Database Connection&am…

android studio BindService

一.输入: 1.全部代码: 主界面代码: public class BindServiceActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG "BindServiceActivity";private Button mBtBindService;…

Service中bindService

最近有用到Activity需要不断的从Service中获取数据,第一个想法肯定就是通过bind回调机制了,有几点概念模糊特此记录下: 单独使用bindService(),unbindService()会经历:->onCreate()->onBind()->Service runn…

bindService不调用onServiceConnected的问题

bindService不调用onServiceConnected的问题 昨天做一个项目时,Activity需要bindService获取到service实例与service进行交互,创建好service如下(例): class MyService{private IBinder mBinder new MyServicerBind…

bind服务

一、域名 www.baidu.com www.baidu.com. (.)根域 (com)一级域名 (baidu)二级域名 二、DNS解析记录分类 A记录、CNAME、MX记录、NS记录 1、A记录 通过域名直接查询到IP 例如&…

bindService启动流程

通过bindService启动的Service,会执行Service的onCreate、onBind、onUnbind、onDestroy方法,可以通过onBind方法返回的Binder对象和调用端进行通信,并且Service的生命周期和调用端同步。 如下是启动bindService的代码 var stu: Student? null val con…

AIDL报错,bindService一直连接不上、不起作用。

先说问题,最近用aidl,发现bindService根本就不走,不知道咋回事,明明写的没有任何毛病啊? //aidl绑定private void bind() {Intent intent new Intent();String pkg "com.example.mzz_service";//需要调用…

服务两种启动方式(startService与bindService)的区别

综上两篇文章 1.Android Service的基本用法(startService启动方式生命周期) 2.Android Service与Activity之间的通信(bindService启动方式) 区别如下: 一.生命周期上的区别 startService启动服务:Service会…

进程间通讯:Binder:bindService之 onServiceConnected回调

1:bindService官方概述 很明显 通过Google官方文档描述,我们知道 1:bindService()的返回值只是表明服务是否存在; 2:真正能代表是否成功绑定服务的是触发onServiceConnected(&…

Android入门第41天-Android中的Service(bindService)

介绍 在前一天我们介绍了Android中有两种启动Service的方法。并擅述了startService和bindService的区别。同时我们着重讲了startService。 因此今天我们就来讲bindService。bindService大家可以认为它是和Android的一个共生体。即这个service所属的activity如果消亡那么bindS…

Android Binder框架实现之bindService详解

Android Binder框架实现之bindService详解 Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android Binder框架实现之何为匿名/实名Binder Android Binder框架实现之Binder中的数据结构 Android Binder框架实现之Binder相关的接口和类 Andr…

Android bindService流程

一. 前言 我们可以通过startService来启动一个服务, 当然也可以通过bindService绑定一个服务,本篇文章我们来讲一讲绑定服务的完整流程, 阅读此文之前,建议先阅读一下笔者的这三篇文章 Android 进程间通信机制(三) 系统进程与应用进程通信 Android 进程间通信机制(四) 应用进程…

bind服务程序

一、介绍 1、bind服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。 2、为了有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全,在安装部署bind服务程序时加上chroot(俗称牢笼机制)…

startService bindService 区别

Android执行Service有两种方法,一种是startService,一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时,Service会经历onCreate->onStartCommand。当执行stopService时&…

Android中Service使用bindService

前面已经对Service的startServer方式启动一个服务了解过了,现在来看一下Service的另一种启动方式→bindServer bindServer使用场景 1、在同个app之间调用(即是同一个进程中) 2、在不同app之间调用(即是跨进程间通信&#xff09…