26、jdbc操作数据库(3)
1、结果集的元数据操作
ResultSetMetaData 是描述ResultSet的元数据对象,可以通过元数据对象获取结果集的列信息,使用方式如下:
public void query() {Connection connection = DBUtil.getConnection();String sql = "SELECT ID,UNAME u,PASSWORD FROM USER";PreparedStatement prepareStatement = null;ResultSet resultSet = null;try {prepareStatement = connection.prepareStatement(sql);//获取到结果集CallableStatementresultSet = prepareStatement.executeQuery();// 通过 结果集的getMetaData() 获取到元数据对象ResultSetMetaData metaData = resultSet.getMetaData();System.out.println("获取数据列数"+metaData.getColumnCount());System.out.println("第二列的字段名是:"+metaData.getColumnName(2));System.out.println("第二列的字段别名是:"+metaData.getColumnLabel(2));} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.close(resultSet, prepareStatement, connection);}
}
2、使用jdbc进行批量处理
当一次处理多条记录时,可使用jdbc进行批量操作,其基本思路是现将要执行的sql进行积攒,然后一次性发送到数据库进行执行,示例代码如下:
//获取连接
Connection connection = DBUtil.getConnection();
String sql = "INSERT INTO USER (uname , password) VALUES (? , ?)";
PreparedStatement prepareStatement = null;
try {//这里一定要注意,mysql是自动提交事务的,所以这里一定要先关闭自动提交connection.setAutoCommit(false);//通过数据库连接获取数据库操作对象prepareStatement = connection.prepareStatement(sql);// 组装sql、积攒sqlfor (int i = 0; i < 10000; i++) {prepareStatement.setObject(1, "zhangsan"+i);prepareStatement.setObject(2, i);prepareStatement.addBatch();}//一次性发送到数据库执行prepareStatement.executeBatch();//手动提交事务connection.commit();
} catch (SQLException e) {e.printStackTrace();
} finally {//关闭资源DBUtil.close(null, prepareStatement, connection);
}
3、使用jdbc调用存储过程、函数
当调用存储过程或者函数时,需要使用到 CallableStatement 类,使用的代码实例如下:
//存储过程
CREATE PROCEDURE add(IN a INT , OUT b INT )
BEGINSET b = a * 10;
END//jdbc调用存储过程 add()//获取连接
Connection connection = DBUtil.getConnection();
//写sql,使用 {CALL 存储过程|函数} 方式调用
String sql = "{CALL getUser(?,?)}";
//获取 CallableStatement 对象
CallableStatement callableStatement = null;
try {callableStatement = connection.prepareCall(sql);//设置传入的参数callableStatement.setInt(1, 256);//执行存储过程callableStatement.execute();//因为第二个参数是OUT类型,所以这里可以获取到int result = callableStatement.getInt(2);System.out.println(result);
} catch (SQLException e) {e.printStackTrace();
} finally {DBUtil.close(null, callableStatement, connection);
}
4、使用jdbc处理事务
使用jdbc操作事务时,首先要关闭mysql的自动提交,最后手动提交,实例代码如下:
//获取连接
Connection connection = DBUtil.getConnection();
String sql = "UPDATE USER SET UNAME = ? WHERE ID = 1";
String sql2 = "UPDATE USER SET UNAME = ? WHERE ID = 2";
try {//关闭自动提交,开启事务connection.setAutoCommit(false);PreparedStatement statement1 = connection.prepareStatement(sql);statement1.setString(1, "czp");statement1.execute();int a=10 / 0;//这里出现错误,则回滚PreparedStatement statement2 = connection.prepareStatement(sql2);statement2.setString(1, "java");statement2.execute();//主动提交事务connection.commit();
} catch (SQLException e) {//出现错误时,回滚try {connection.rollback();} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();
} finally {DBUtil.close(null, null, connection);
}
26、jdbc操作数据库(3)相关推荐
- Java系列技术之JDBC操作数据库-钟洪发-专题视频课程
Java系列技术之JDBC操作数据库-22人已学习 课程介绍 JDBC连接数据库是Java系列技术中数据库知识的核心技术,是学习后续课程JavaWeb入门前需要掌握的基础! 这门课的前 ...
- JavaWeb:用JDBC操作数据库
JDBC系列阅读 JavaWeb:用JDBC操作数据库 JavaWeb:JDBC之事务 JavaWeb:JDBC之数据库连接池 使用JDBC实现水果超市管理系统 1. 什么是JDBC JDBC的全称是 ...
- 25、jdbc操作数据库(2)
说一下使用jdbc时涉及到的一些基本的接口和类 java.sql.Driver 是数据库驱动接口,com.mysql.jdbc.Driver是mysql对应的驱动,由数据库供应商实现,用于提供驱动,实 ...
- 24、jdbc操作数据库(1)
什么是jdbc? 看一下官方怎么说,JDBC 英文名Java DataBase Connectivity,使用java连接数据库的工具,就是一组使用java代码来执行SQL语句的API. Jdbc有什 ...
- java监听数据库操作_第十六篇——JDBC操作数据库之监听器
JavaWeb应用中,很多的地方都和session有关.因此session相关的事件监听器,在日常工作中非常有用. 有时候我们需要统计当前在线的人数和访问人数总数,此时就可以使用监听器技术来很简单的实 ...
- Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构
文章目录 Mybatis介绍 jdbc操作数据库原生写法 使用jdbc编程问题总结 Mybatis架构 Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个 ...
- jdba访问mysql_Java中JDBC操作数据库的步骤
Java中JDBC操作数据库的步骤,今天给喜欢Java开发或者是想要参加Java培训学习的小伙伴们分享一些Java技能干货,那就是Java阐述jdba操作数据库的步骤,废话不多说了,随小编一起来看一下 ...
- java完整JDBC操作数据库
java使用JDBC操作数据库的包含以下7个主要步骤: 1.加载JDBC驱动程序 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的 ...
- 说说JDBC 操作数据库的步骤?
分析&回答 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操作结果集. ...
- 【JDBC】JDBC 简介 ( JDBC 概念 | JDBC 本质 | 使用 JDBC 操作数据库的好处 | JDBC 提供的 API 组件 )
文章目录 一.JDBC 概念 二.JDBC 本质 三.使用 JDBC 操作数据库的好处 四.JDBC 提供的 API 组件 一.JDBC 概念 JDBC 全称 Java DataBase Connec ...
最新文章
- 一键编译php,编译安装php 附加一键安装php5.6.30脚本
- SQL系列ROLLUP关键字
- oracle设置导出权限,Oracle 创建 删除 用户 导出 导入 分配权限
- POJ 1410 Intersection 判断线段交和点在矩形内 【计算几何】
- 2.27linux和windows互传文件
- Jasypt 加密-引言
- WCF的用户名+密码认证方式
- android 评价 星星大小,Android RatingBar 评价栏 星星 大小 样式 设置
- python学习随笔day3
- 在Ruby on Rails中对nil v。空v。空白的简要解释
- python在哪里写代码-python的代码在哪编写
- 我收集的软件序列号(转帖)
- 简单博饼游戏的实现(java)
- Thymeleaf指定背景图片以及图片如何调整大小
- STK9 Object Browser灰色无法操作
- 面对突如其来的新冠,“AI”可以做点什么?
- 智能手环的软硬件与产业
- stata实现经济生态的空间杜宾模型
- 锐龙r7 6800u和i5 12500h选哪个好 r76800u和i512500h对比
- 海康威视摄像机的实时读取篇一(OpenCV开发环境配置)
热门文章
- 归并排序 java 迭代_经典排序算法之归并排序(示例代码)
- linux开发板推荐_【新品发布】WiFi开发板XW-01-Kit,超低功耗,冷启快联,智能门锁首选!...
- 软件构造学习笔记-第二周
- [JavaWeb-MySQL]DDL_操作数据库,表
- C++map容器-插入和删除
- 2020牛客国庆集训派对day2 F题 Java大数处理
- 题目 2285: [蓝桥杯][2018年第九届真题]螺旋折线(数论+思维)
- 服务器水冷系统仿真,水冷漫谈(三)——水冷散热器仿真方法
- 2016ICPC沈阳站
- [SDOI2011]消耗战