JDBC_part3_批处理_事务_元数据
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.
**转载请注明 出自 : luogg的博客园 ** 谢谢配合!
JDBC_day03
String a = "abc"; **效率高 , 常量池**
String b = "abc";
System.out.println(a==b);//true
System.out.println(a.equals(b));//true
String A = new String("abc");//创建了一个或两个对象(池中有,创建一个,池中没有 创建两个)
String B = new String("abc");
System.out.println(A==B);//false
System.out.println(A.equals(B));//true
System.out.println(A==b);//false
System.out.println(A.equals(b));//true
批处理
- 预编译的批处理执行insert 语句
- addBatch();
非预编译批处理
String sql1 = "update copy_emp set salary=salary+'" + count +"'where employee_id='"+empIDA+"'";
String sql2 = "update copy_emp set salary=salary-'" +count +"' where employee_id='"+empIDB+"'";
Statement stmt = conn.createStatement();
stmt.addBatch(sql1);
stmt.addBatch(sql2);
int[] arr = stmt.executeBatch();
System.out.println(arr[0]+","+arr[1]);//1,1
预编译批处理
String sql = "insert into t_student(stu_name,stu_age) values(?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "小刚!");
pstmt.setInt(2, 3);
pstmt.addBatch();
pstmt.setString(1, "小虎!!");
pstmt.setInt(2, 4);
pstmt.addBatch();
int[] arr = pstmt.executeBatch();
//只要输出不为0,就说明有影响行数
System.out.println(arr[0] + "," + arr[1]);//-2 , -2
JDBC事务
所谓事务就是所有的sql操作要么一起成功,要么一起失败,类似于银行一个账户给另一个账户转账.
事务的特性 : 原子性,一致性,隔离性或独立性,持久性
步骤:
- 取消掉Connection中设置的自动提交方式:conn.setAutoCommit(false) ;
- 如果批处理操作成功,则执行提交事务:conn.commit() ;
如果操作失败,则肯定会引发异常,在异常处理中让事务回滚:conn.rollback() ;
Connection conn = DBUtil.getConnection();
try {
conn.setAutoCommit(false);
int i = DBUtil.updateSql("update copy_emp set salary=salary+'" + count +"'where employee_id='"+empIDA+"'");
int j = DBUtil.updateSql("update copy_emp set salarys=salary-'" +count +"' where employee_id='"+empIDB+"'");
System.out.println(i+","+j);
conn.commit();
} catch (SQLException e2) {
try {
conn.rollback();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
元数据
就是描述数据库对象的结构的数据。
- DatabaseMetaData 数据库的元数据,如数据库的名称,版本等
- ResultSetMetaData 查询结果的元数据, 如查询结果中字段数量(列数), 某字段名称等
//数据库元数据
DatabaseMetaData dbmd = conn.getMetaData();
int i = dbmd.getDatabaseMajorVersion();
System.out.println("数据库主版本 : " + i);//10
int j = dbmd.getDatabaseMinorVersion();
System.out.println("数据库次版本 : " + j);//2
String name = dbmd.getDatabaseProductName();
System.out.println("数据库名字 : " + name);//Oracle
String version = dbmd.getDatabaseProductVersion();
/*Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options*/
System.out.println("数据库版本 : " + version);
//结果集元数据
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int column = rsmd.getColumnCount();
System.out.println(column);
for(int i = 1 ; i <= column ; i++) {
//打印所有字段名称
System.out.println(rsmd.getColumnName(i));
}
while(rs.next()) {
for(int i = 1 ; i <= column ; i++) {
//打印所有数据
System.out.print(rs.getString(i)+"\t");
}
System.out.println();
}
JDBC_part3_批处理_事务_元数据的更多相关文章
- MySQL数据库_索引_事务_优化 _锁_存储引擎_存储过程_CAP
##一.基础 ## * 插入 INSERT INTO table_name ( field1, field2,...fieldN ) ...
- 事务_基本演示和事务_默认自动提交&手动提交
事务的基本介绍 概念: 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败 操作: 开启事务:start transaction; 回滚:rollback; 提交:co ...
- 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好
HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...
- Oracle学习总结_day03_day04_条件查询_排序_函数_子查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...
- C Primer Plus_第6章_循环_编程练习
1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...
- 3.IP地址分类_规划_子网掩码
IP地址分类_规划_子网掩码 3.1MAC地址 网卡的身份证号———MAC地址 MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20: ...
- 宏定义中的##操作符和... and _ _VA_ARGS_ _
1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used i ...
- 宏 #,##,_ _VA_ARGS_ _
宏里面使用: 一.# 转为字符串 #define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x)) ...
随机推荐
- C++随笔:.NET CoreCLR之GC探索(3)
有几天没写GC相关的文章了哈,今天我讲GC的方式是通过一个小的Sample来讲解,这个小的示例代码只有全部Build成功了才会有.地址为D:\coreclr2\coreclr\bin\obj\Wind ...
- [原][Docker]特性与原理解析
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...
- WebSocket - ( 一.概述 )
说到 WebSocket,不得不提 HTML5,作为近年来Web技术领域最大的改进与变化,包含CSS3.离线与存储.多媒体.连接性( Connectivity )等一系列领域,而即将介绍的 WebSo ...
- 【Java每日一题】20170106
20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- CSS3 @keyframes 动画
CSS3的@keyframes,它可以取代许多网页动画图像,Flash动画,和JAVAScripts. CSS3的动画属性 下面的表格列出了 @keyframes 规则和所有动画属性: 浏览器支持 表 ...
- 编译器开发系列--Ocelot语言7.中间代码
Ocelot的中间代码是仿照国外编译器相关图书Modern Compiler Implementation 中所使用的名为Tree 的中间代码设计的.顾名思义,Tree 是一种树形结构,其特征是简单, ...
- 电脑新建svn仓库
步骤1:安转svg: 注意事项: 安装的时候选择:Modify 安装到以下图片的步骤时: 黄色区域选择: 步骤2:新建svn仓库文件夹(本教程例子:D:\svn-5gpos),选择文件夹右键,点击下图 ...
- zookeeper集群的搭建以及hadoop ha的相关配置
1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...
- /etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses abc l2tpd * client:VPN 用 ...
- 我的MYSQL学习心得(十一) 视图
我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...