Java类对数据库结果集的处理(源码)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

JDBC提供了很多连接数据库的方法,同时也提供了ResultSet方法对数据库结果集的可滚动查询,可更新查询。

 

举例数据库:Mysql

 

声明:这两个类我都已经测试通过,如果运行出错,请仔细检查,源码方法一定没问题。问题可能会出在表数据的属性,和JDBC版本是否支持。

 

下面是源码:

 

可滚动查询源码:(对数据进行了输出控制)

 

复制代码
import  java.sql. * ;

ExpandedBlockStart.gif
public   class  TestScrollResultSet {
ExpandedSubBlockStart.gif    
public static void main(String orgs[]){
        Connection conn
=null;
ExpandedSubBlockStart.gif    
try{
       Class.forName(
"com.mysql.jdbc.Driver");
       String url
="jdbc:mysql://localhost:3306/people";
       conn
=DriverManager.getConnection(url,"username","password");
       Statement stmt
=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
       ResultSet rs
=stmt.executeQuery("select * from guestmessage");
ExpandedSubBlockStart.gif       
while(rs.next()){
            showOneRow(rs);
       }
         
       System.out.println(
"---------------------------------");
       rs.last();
       showOneRow(rs);
       rs.first();
       showOneRow(rs);
       rs.beforeFirst();
       rs.next();
       showOneRow(rs);
       rs.absolute(
2);
       showOneRow(rs);
ExpandedSubBlockStart.gif}
catch(Exception e){
   e.printStackTrace();
ExpandedSubBlockStart.gif}
finally{
ExpandedSubBlockStart.gif   
try{
ExpandedSubBlockStart.gif      
if(conn!=null){
        conn.close();
      }

ExpandedSubBlockStart.gif   }
catch(Exception e){
   e.printStackTrace();
   }

  }

}

ExpandedSubBlockStart.gif
public static void showOneRow(ResultSet rs)throws SQLException{
            System.out.print(
""+rs.getRow()+""); 
            System.out.print(
"\t"+rs.getInt(1));
            System.out.print(
"\t"+rs.getString(2));
            System.out.print(
"\t"+rs.getString(3));
            System.out.println();
}

}
复制代码

 

可更新查询源码:(可以通过此类直接更改数据库数据,但并不推荐,只作为功能介绍)

 

复制代码
import  java.sql. * ;

ExpandedBlockStart.gif
public   class  TestUpdatableResultSet {
ExpandedSubBlockStart.gif    
public static void main(String orgs[]){
        Connection conn
=null;
ExpandedSubBlockStart.gif    
try{
       Class.forName(
"com.mysql.jdbc.Driver");
       String url
="jdbc:mysql://localhost:3306/people";
       conn
=DriverManager.getConnection(url,"username","password");
       Statement stmt
=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
       ResultSet rs
=stmt.executeQuery("select id,name,url from guestmessage");
       
//ResultSet rs=stmt.executeQuery("select t.* from guestmessage");
        
//更新前结果集中的数据
ExpandedSubBlockStart.gif
       while(rs.next()){
            showOneRow(rs);
       }
         
       
//更新和删除记录
       rs.beforeFirst();
ExpandedSubBlockStart.gif       
while(rs.next()){
         String name
=rs.getString("name").trim();//.trim()过滤掉空格
ExpandedSubBlockStart.gif
         if(name.equals("施杨")){
            String sal
=rs.getString("url");
            rs.updateString(
"url",sal+"pppp");
            rs.updateRow();
ExpandedSubBlockStart.gif         }
else if(name.equals("dd")){
            rs.deleteRow();
         }

       }

       
//插入新记录
       rs.moveToInsertRow();
       rs.updateInt(
"id",19);
       rs.updateString(
"name","hahahahhaha");
       rs.updateString(
"url","ssssssss");
       rs.insertRow();
       rs.close();
       
//结果集更新后数据库中数据
       System.out.println("---------------------------------");
       rs
=stmt.executeQuery("select * from guestmessage");
ExpandedSubBlockStart.gif       
while(rs.next()){
          showOneRow(rs);
       }

       rs.close();
ExpandedSubBlockStart.gif}
catch(Exception e){
   e.printStackTrace();
ExpandedSubBlockStart.gif}
finally{
ExpandedSubBlockStart.gif   
try{
ExpandedSubBlockStart.gif      
if(conn!=null){
        conn.close();
      }

ExpandedSubBlockStart.gif   }
catch(Exception e){
   e.printStackTrace();
   }

  }

}

ExpandedSubBlockStart.gif
public static void showOneRow(ResultSet rs)throws SQLException{
            System.out.print(
"\t"+rs.getInt(1));
            System.out.print(
"\t"+rs.getString(2));
            System.out.print(
"\t"+rs.getString(3));
            System.out.println();
}

}
复制代码

 

 

实现这两个类要更改类中有关数据库数据,然后就可以完美运行了。


本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/08/15/1268305.html,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
数据采集 运维 前端开发
【Java】全套云HIS源码包含EMR、LIS (医院信息化建设)
系统技术特点:采用前后端分离架构,前端由Angular、JavaScript开发;后端使用Java语言开发。
29 5
|
10天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
27 1
|
10天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
24 0
java基础(13)String类
|
9天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
11天前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
4天前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
26 14
|
6天前
|
传感器 监控 数据可视化
【Java】智慧工地解决方案源码和所需关键技术
智慧工地解决方案是一种新的工程全生命周期管理理念。它通过使用各种传感器、数传终端等物联网手段获取工程施工过程信息,并上传到云平台,以保障数据安全。
30 7
|
8天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
10天前
|
Java
java的class类
java的class类
18 5
|
11天前
|
Java 数据处理
Java Scanner 类详解
`Scanner` 类是 Java 中 `java.util` 包提供的强大工具,用于从多种输入源(如键盘、文件、字符串)读取数据。本文详细介绍如何创建 `Scanner` 对象并使用其常用方法(如 `next()`, `nextInt()`, `nextLine()` 等)。通过示例代码展示如何从标准输入、字符串及文件中读取数据,并进行输入验证。使用时需注意关闭 `Scanner` 以释放资源,并确保输入类型匹配,避免异常。掌握 `Scanner` 可显著提升程序的数据处理能力。
下一篇
无影云桌面