本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

**转载请注明 出自 : 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操作要么一起成功,要么一起失败,类似于银行一个账户给另一个账户转账.

事务的特性 : 原子性,一致性,隔离性或独立性,持久性

步骤:

  1. 取消掉Connection中设置的自动提交方式:conn.setAutoCommit(false) ;
  2. 如果批处理操作成功,则执行提交事务: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_批处理_事务_元数据的更多相关文章

  1. MySQL数据库_索引_事务_优化 _锁_存储引擎_存储过程_CAP

    ##一.基础 ## *    插入                   INSERT INTO table_name ( field1, field2,...fieldN )              ...

  2. 事务_基本演示和事务_默认自动提交&手动提交

    事务的基本介绍 概念: 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败 操作: 开启事务:start transaction; 回滚:rollback; 提交:co ...

  3. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

  4. Oracle学习总结_day03_day04_条件查询_排序_函数_子查询

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...

  5. 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 ...

  6. 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

    本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...

  7. 3.IP地址分类_规划_子网掩码

    IP地址分类_规划_子网掩码 3.1MAC地址 网卡的身份证号———MAC地址 MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20: ...

  8. 宏定义中的##操作符和... and _ _VA_ARGS_ _

    1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used i ...

  9. 宏 #,##,_ _VA_ARGS_ _

    宏里面使用: 一.#  转为字符串 #define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x)) ...

随机推荐

  1. 小兔JS教程(三)-- 彻底攻略JS回调函数

    这一讲来谈谈回调函数. 其实一句话就能概括这个东西: 回调函数就是把一个函数当做参数,传入另一个函数中.传进去的目的仅仅是为了在某个时刻去执行它. 如果不执行,那么你传一个函数进去干嘛呢? 就比如说对 ...

  2. Oracle 表空间和用户权限管理

    一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻 ...

  3. Linux基础介绍【第一篇】

    Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...

  4. 【转】 XenServer的架构

    一.Dom0或者控制域 XenServer从安装上看起来像是一个Linux,所以有些同学认为XenServer就是Linux或者是Linux修改的.真实的XenServer和Linux的关系是这样的: ...

  5. Lesson 24 It could be worse

    Text I entered the hotel manager's office and sat down. I had just lost £50 and I felt very upset. ' ...

  6. WPF自定义控件第二 - 转盘按钮控件

    继之前那个控件,又做了一个原理差不多的控件.这个控件主要模仿百度贴吧WP版帖子浏览界面左下角那个弹出的按钮盘.希望对大家有帮助. 这个控件和之前的也差不多,为了不让大家白看,文章最后发干货. 由于这个 ...

  7. webstorm license key

    JetBrains WebStorm注册码 UserName: William License Key : ===== LICENSE BEGIN ===== 45550-12042010 00001 ...

  8. 给WinForm窗体添加快捷键 响应回车键、空格键

    1.设置窗体KeyPreview属性为True 2.添加窗体的KeyDown事件 /// <summary> /// 窗体的keydown事件响应 添加快捷键 /// </summa ...

  9. 苹果台式一体机笔记本安装win双系统攻略教程

    步骤 序:win系统下载 :http://www.itellyou.cn 选择要安装的系统进行下载,本文以win7为例   进入苹果系统,左上角——前往——实用工具——BootCamp 助理 点击继续 ...

  10. xcode8.1 插件失效的问题

    1,查看 Xcode 插件安装目录 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 鼠标点一下桌面, command+shi ...