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)) ...
随机推荐
- .NET应用和AEAI CAS集成详解
1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...
- Entity Framework 教程——DBContext
DBContext: 在之前的章节<创建实体数据模型>中,EDM为我们创建了SchoolDBEntities 类,它派生子System.Data.Entity.DbContext这个类,这 ...
- 【代码笔记】iOS-获得当前的月的天数
一,代码. #import "ViewController.h" @interface ViewController () @end @implementation ViewCon ...
- maven的pom.xml关系依赖书写顺序
今天遇到了一个情况,以前代码编译没有问题,升级了hbase客户端phoenix驱动,又调整了thrift的关系依赖的位置,放到了这个驱动后面. 如下: 导致了一个thrift接口类编译报错: 检查这个 ...
- TCP服务和首部知识点小结
服务 应用程序会被TCP分割成数据段,而UDP不分割. TCP有超时重传和确认 如果检验和出错将丢弃 IP数据包可能会失序或者重复,所以TCP会处理 滑动窗口来进行流量控制 对字节流的内容不做任何解释 ...
- Python 黑帽编程大纲(变化中)
Python 黑帽编程大纲(预览版) 教程说明: 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Pytho ...
- MVVM大比拼之avalon.js源码精析
简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...
- Spring Boot -- Start Up
做Java Web的同学,都知道项目启动需要放到servlet容器里面运行,无论是使用哪一款IDE,都是非常麻烦的一件事情.在很早之前,一个servlet容器下可以放下很多的项目,并一起运行,而到现在 ...
- JVM虚拟机结构
JVM的主要结构如下图所示,图片引用自舒の随想日记. 方法区和堆由所有线程共享,其他区域都是线程私有的 程序计数器(Program Counter Register) 类似于PC寄存器,是一块较小的内 ...
- magic方法的magic
事实上,在python中一个类被实例化的时候首先被调用的并不是__init__方法,而是__new__方法.只是new方法一般很少重写.new方法会有返回值传给init方法.因此,init方法不能够有 ...