使用CachedRowSet建立连接数据库工具类DBUtils
CachedRowSet:可在内存中缓存其各行,使得进行操作是无需总是连接到数据源,是一个非连接rowset,这意味着它只会短暂的连接其数据源,获取数据方式和ResultSet相似,将ResultSet类型的数据放入到CachedRowSet类型的变量中使用populate()。
ResultSet局限性:默认的ResultSet对象不可更新,仅有一个可移动的光标,因此,只能迭代它一次,并且只能从第一行到最后一行。
package com.utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.sql.rowset.CachedRowSet;import com.sun.rowset.CachedRowSetImpl;public final class DBUtils {private static String URL = "jdbc:mysql://localhost:3306/mvcdemo";private static String USER = "root";private static String PASSWORD = "1234";private static Connection conn;static {try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection(URL, USER, PASSWORD);System.out.println("数据库连接成功!");} catch (SQLException | ClassNotFoundException e) {System.out.println("数据库连接失败!");e.printStackTrace();}}/*** 绑定参数* @param pstmt* @param params* @throws SQLException */private static void bindParams(PreparedStatement pstmt,Object...params) throws SQLException {for (int i = 0; i < params.length; i++) {pstmt.setObject(i+1, params[i]);}}/*** 执行数据库的增、删、改* @param sql 要执行的语句* @param params 参数* @return 执行结果* @throws SQLException*/public static boolean executeNonQuery(String sql,Object...params) throws SQLException {boolean flag = false;try(PreparedStatement pstmt = conn.prepareStatement(sql);) {bindParams(pstmt, params);int result = pstmt.executeUpdate();flag = result > 0;} catch (SQLException e) {e.printStackTrace();throw e;}return flag;}/*** 显示一行一列的数据* @param sql 要执行的语句* @param params* @return 返回一行一列的结果* @throws SQLException*/public static Object executeScalar(String sql,Object...params) throws SQLException {ResultSet rs = null;try(PreparedStatement pstmt = conn.prepareStatement(sql);){bindParams(pstmt, params);rs = pstmt.executeQuery(); if(rs.next()) {return rs.getObject(1);}}catch(SQLException e) {e.printStackTrace();throw e;}finally {if(rs != null) {rs.close();}} return null;} /*** 执行查询* @param sql 查询的语句* @param params 查询的参数* @return 结果集* @throws SQLException*/public static CachedRowSet executesQuery(String sql,Object...params) throws SQLException {//创建CachedRowSet对象CachedRowSet crs = new CachedRowSetImpl();ResultSet rs = null;try(PreparedStatement pstmt = conn.prepareStatement(sql);) {bindParams(pstmt, params);rs = pstmt.executeQuery();//将ResultSet转换为CachedRowSetcrs.populate(rs);} catch (SQLException e) {e.printStackTrace();throw e;}finally {if(rs != null) {rs.close();}}return crs;}
}
使用CachedRowSet建立连接数据库工具类DBUtils相关推荐
- 2021开年巨作!JDBC连接数据库工具类!
JDBC连接数据库工具类! 去年十一月二十号更新完之后就一直没有更新,因为被派出差天天九九六的日子让我毫无心思在上面写博客. 唉,马上就要过年了,小伙伴们是不是还在熬夜加班加点赶项目呢?同是天涯沦落人 ...
- java dbhelper类_DBHelper--Java JDBC SSH 连接数据库工具类
概述 JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. 简单使用 使用JDBC需要以下几个步骤 1. 加载JDBC ...
- 原生JDBC和工具类的基本实现
工具: IDEA MySQL8.0或之前版本 文章目录 JDBC原理 JDBC入门案例 JDBC的API详解 JDBC增删改查操作 JDBC工具类 JDBC是Java访问数据库的标准规范,可以为不同的 ...
- jdbc连接mysql工具类_jdbc之工具类DBUtil的使用
首先回顾一下jdbc的使用方法: 1. 注册驱动 2. 建立连接 3. 建立statement 4. 定义sql语句 5. 执行sql语句,如果执行的是查询需遍历结果集 6. 关闭连接 其中建立连接和 ...
- MD5加密工具类(实战版)
MD5加密工具类(实战版) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成 ...
- java druid jdbc例子_JDBC【使用Druid连接数据库,DBUtils工具类的使用】
Druid连接数据库,DBUtils工具类的使用 1.在maven中添加Druid依赖 com.alibaba druid 1.2.0 2.封装Druid连接方法 import com.alibaba ...
- 30_java之DButils工具类
01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类* a: 概述* DBUtils是java编程中的数据库操作实用工具,小巧简单实用.* DBUtils封装了 ...
- 连接数据库时常用的工具类(一)-------C3P0XmlUtils
工具类一:C3P0XmlUtils 使用前应先把c3p0-config.xml 文件导入到Src的根目录下,如下图 下面为C3P0XmlUtils工具类: package cn.kgc.c3p0_xm ...
- JDBC实例--工具类升级,使用Apache DBCP连接池重构DBUtility,让连接数据库更有效,更安全...
直接使用JDBC访问数据库时,需要避免以下隐患: 1. 每一次数据操作请求都需要建立数据库连接.打开连接.存取数据和关闭连接等步骤.而建立和打开数据库连接是一件既耗资源又费时的过程,如果频繁发生这种数 ...
最新文章
- 重磅丨We Are SocialHootsuite:2018全球数字报告
- python编程软件v-Thonny(Python编程工具) V3.2.5 官方版
- python圆柱体,用PYTHON将圆柱体分散到3D XYZ点数据
- 四十一、Python统计模块statistics
- 用户测评 | EDAS Serverless 上手体验 1
- kafka和zookeeper一键启停脚本(以及kafka关不掉问题解决)
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第31篇]Game Hopping证明
- python defaultdict 类属性_Python collections.defaultdict模块用法详解
- Dubbo源码分析系列之-深入Dubbo扩展机制
- [Windows编程] 如何判断操作系统是64位还是32位
- .NET Core 管道
- 计算机休眠变关机,笔记本电脑一进入睡眠休眠就关机!重启后就显 – 手机爱问...
- 魔方机器人之下位机编程-----两种串口通信方式的比较
- 是时候开始好好考虑自己的职业定位了
- 固态硬盘故障检测_有哪些好用的检测软件是用于判断固态硬盘故障的?
- WiFi mac地址详解
- android 缓存文件目录在哪个文件夹,哔哩哔哩缓存在哪个文件夹 具体操作步骤
- 基于CH340G的STC单片机一键下载电路
- Android 仿淘宝京东等我的订单界面及任意列表拓展
- Swift不深入只浅出入门教程-孟祥月-专题视频课程