- 浏览: 235509 次
- 性别:
- 来自: 武汉
-
文章分类
最新评论
-
wcl694216530:
[url][img][img][url][flash=200, ...
oracle的语法start with和connect by nocycle -
gyhbody:
你这个是不是SWC加载错误啊?
flex乱码问题 -
gyhbody:
那 通过什么来查看SWC文件
flex乱码问题 -
liushp1:
[img] [/img]
jsp中redirect和forward的区别 -
little_fei754:
我的输出是120 120。求大神解释。
java表达式类型转换
在用java处理数据库事务时,java.sql.Connection提供对本地事物支持的方法有:
void setAutoCommit(boolean autoCommit)throws SQLException;//设置对数据库的更改是否自动提交
void commit()throws SQLException;//提交对数据库的更改
void rollback()throws SQLEception;//撤销更改
数据库本地事务默认情况下是自动提交,如果手动使用本地事务,那么应该首先设置手动提交事务,即下面语句:
setAutoCommit(false);
在这种模式下,才能使用commit()和rollback()方法。
下面这个程序,所有的操作是在一个事物里面,所以commit前和后是一样的结果:
package com.j2ee14.ch7; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DataBaseTransaction { Connection conn = null; public void testTransaction() { try { conn.setAutoCommit(false); Statement stmt = conn.createStatement(); for (int i = 0; i < 10; i++) stmt.execute("insert into customer1 values('" + i + "','hesihua',25)"); System.out.println("before commit, the table is ....."); viewTable(); conn.commit(); System.out.println("after coomit the table is...."); viewTable(); } catch (Exception e) { e.printStackTrace(); System.out.println("eror"); try{ conn.rollback(); }catch(SQLException ex){ System.out.println("fatal error occur"); } } } public void createTable() { try { conn.createStatement() .execute( "create table customer1(id varchar(20),name varchar(50),age int)"); } catch (Exception e) { e.printStackTrace(); } } public void viewTable() { try { ResultSet rst = conn.createStatement().executeQuery( "select * from customer1"); while (rst.next()) { System.out.print(rst.getString("id")+"\t"); } rst.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args)throws Exception { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); DataBaseTransaction test=new DataBaseTransaction(); test.conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/j2ee14","root","123456"); test.createTable(); test.testTransaction(); } }
执行后的结果为:
before commit, the table is .....
0 1 2 3 4 5 6 7 8 9 after coomit the table is....
0 1 2 3 4 5 6 7 8 9
插播一个见识:
事务都是指不同的连接之间的关系
同一个连接内你执行了什么操作就是什么结果
就相当于一个事务有一个缓存,未提交时操作只影响缓存,还没影响到数据库,所以其他事务看不到,只有提交后其他事务才看得到。
现在我改写了上面的程序就可以明显看到commit前和commit后的区别:
package com.j2ee14.ch7; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DataBaseTransaction { // Connection conn = null; // public void testTransaction(Connection conn,Statement stmt) { // try { // conn.setAutoCommit(false); // Statement stmt = conn.createStatement(); // for (int i = 0; i < 10; i++) // stmt.execute("insert into customer1 values('" + i // + "','hesihua',25)"); // System.out.println("before commit, the table is ....."); // viewTable(); // conn.commit(); // System.out.println("after coomit the table is...."); // viewTable(); // // } catch (Exception e) { // e.printStackTrace(); // System.out.println("eror"); // try{ // conn.rollback(); // }catch(SQLException ex){ // System.out.println("fatal error occur"); // } // } // // } public void addRecode(Connection conn,Statement stmt){ try{ for (int i = 0; i < 10; i++) stmt.execute("insert into customer1 values('" + i + "','hesihua',25)"); }catch(Exception e){ e.printStackTrace(); } } public void createTable(Connection conn,Statement stmt) { try { stmt.execute("create table customer1(id varchar(20),name varchar(50),age int)TYPE=INNODB"); } catch (Exception e) { e.printStackTrace(); } } public void viewTable(Connection conn) { try { ResultSet rst = conn.createStatement().executeQuery( "select * from customer1"); while (rst.next()) { System.out.print(rst.getString("id")+"\t"); } System.out.println(); rst.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args)throws Exception { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); DataBaseTransaction test=new DataBaseTransaction(); Connection conn = null; Connection conn1 = null; Connection conn2 = null; conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/j2ee14","root","123456"); conn.setAutoCommit(false); Statement stmt = conn.createStatement(); test.createTable(conn,stmt); conn.commit(); test.addRecode(conn, stmt); System.out.println("before commit, the table is ....."); conn2=DriverManager.getConnection("jdbc:mysql://127.0.0.1/j2ee14","root","123456"); test.viewTable(conn2); try{ conn.commit(); }catch(Exception e){ conn.rollback(); e.printStackTrace(); } System.out.println("after coomit the table is...."); conn1=DriverManager.getConnection("jdbc:mysql://127.0.0.1/j2ee14","root","123456"); test.viewTable(conn1); stmt.close(); conn.close(); conn1.close(); conn2.close(); } }
执行的结果为:
before commit, the table is .....
after coomit the table is....
0 1 2 3 4 5 6 7 8 9
有点想不明白的是为什么在conn提交之后要重新创建一个连接才能看到数据库里的数据。
发表评论
-
java基础总结1
2013-03-02 21:31 16961、在进行字符串逆转时可以采用StringBuffer对象 ... -
ztf实习开发总结
2012-07-25 20:34 1405weblogic workshop的问题 1、流程管理系统是 ... -
Java中this关键字的几种用法
2012-05-11 18:38 1005http://blog.csdn.net/anmei2010/ ... -
java中this的用法
2012-05-09 23:11 0http://blog.csdn.net/anmei2010/ ... -
java核心技术总结八--多线程
2012-05-03 23:32 11421、多线程程序在较低的层次上扩展了多任务的概念: 一个程序同时 ... -
堆和栈的区别
2012-04-11 23:46 838一、预备知识—程序的 ... -
native关键字
2012-04-11 12:53 1060java native关键字 一. ... -
什么是重构
2012-04-11 12:50 982重构 ( Refactoring ... -
ConcurrentHashMap 高并发性的实现机制
2012-04-07 23:59 5229简介 ConcurrentHashMap 是 util.co ... -
String和stringbuffer和stringbuilder的区别
2012-03-19 17:13 1084String 字符串常量 StringBuffer 字符串 ... -
java核心技术总结七--异常、日志、断言和调试
2012-03-03 23:09 1742第十一章 1、异常的分类: Th ... -
java核心技术总结六
2012-02-22 21:15 1009第10章 1、用命令打jar包: ... -
Java类中构造方法的执行顺序和变量初始化
2012-02-13 11:53 1073看下面的代码先不要运行而尝试给出输出:class A { ... -
java核心技术总结五
2012-01-03 15:46 1013第六章 1、接口 (1)、接口中可以包含多个方法,还可以定 ... -
java核心技术总结四
2011-12-30 21:55 2827第五章总结: 1、java用关键字extends代替 ... -
ftp文件的上传与下载
2011-12-30 17:11 1067http://www.cnblogs.com/chen1987 ... -
java核心技术总结三
2011-12-30 09:49 1054第四章:对象和类 1、在类之间,最常见的关系有: ... -
java表达式类型转换
2011-12-16 17:11 1254今天无意中看到我之前做的一个关于java面试题的小测试 ,发现 ... -
Double型数值保留2位小数
2011-12-14 10:32 18083//保留2位小数 public static doubl ... -
java核心技术总结二
2011-12-09 22:44 1133第二章; 1、netBeans是sun公司的集成开 ...
相关推荐
《深入理解JDBC Driver 3.0:聚焦SQL Server JDBC》 在IT行业中,数据库连接是应用程序与数据存储之间的桥梁,而JDBC(Java Database Connectivity)则是Java平台中用于访问数据库的标准API。JDBC Driver 3.0是针对...
SQL Server驱动包是用于Java应用程序通过JDBC(Java Database Connectivity)接口与Microsoft SQL Server数据库进行交互的必备组件。本文将详细介绍这两个重要的驱动文件——sqljdbc.jar和sqljdbc4.jar,以及如何...
Java数据库连接(JDBC)是Java编程语言中用于与各种数据库进行交互的一组接口和类。JDBC-ODBC桥是JDBC最初提供的一种连接数据库的方式,它允许Java应用程序通过ODBC(Open Database Connectivity)来访问数据库。...
SQLJDBC和SQLJDBC4是Microsoft为Java应用程序提供的用于连接SQL Server数据库的驱动程序。这两个版本都是JDBC(Java Database Connectivity)驱动,允许Java开发者在应用程序中与SQL Server进行交互。下面将详细介绍...
Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...
SQL Server JDBC驱动是Microsoft公司为SQL Server数据库开发的一套Java数据库连接驱动,它允许Java应用程序通过Java数据库连接API(JDBC)与SQL Server数据库进行交互。JDBC是Java中用于数据库交互的标准API,它提供...
mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及...
mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上...
在Java编程语言中,JDBC(Java Database Connectivity)是一个核心的API,用于连接Java应用程序与各种类型的数据库。这里我们关注的是两个特定版本的Microsoft SQL Server的JDBC驱动:sqljdbc41.jar和sqljdbc42.jar...
sqljdbc.jar 类库提供对 JDBC 3.0 的支持。 sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。 注意: JDBC Driver 2.0 不支持 JRE 1.4。...
在给定的压缩包文件中,包含了三个不同版本的达梦JDBC驱动,分别是Dm7JdbcDriver16.jar、Dm7JdbcDriver17.jar和Dm7JdbcDriver18.jar。 1. **JDBC驱动介绍**: JDBC是Java中用于与各种数据库进行交互的标准接口,它...
为了实现Java应用程序与Oracle数据库之间的连接,Oracle公司提供了JDBC(Java Database Connectivity)驱动。JDBC是一种Java API,用于连接和执行查询与数据库的操作。随着技术的不断更新,Oracle数据库也在不断地...
JDBC 基础知识点 JDBC(Java Database Connectivity)是一种Java标准的数据库连接API,它允许Java程序访问各种关系数据库。下面是JDBC的基础知识点: 一、JDBC原理概述 * JDBC是一套协议,由Sun定义的一组接口,...
KingbaseV8 JDBC驱动是连接KingbaseV8数据库的重要组件,允许Java应用程序通过JDBC(Java Database Connectivity)接口与数据库进行交互。JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了...
SQL Server 2000 JDBC 是Java编程语言与Microsoft SQL Server 2000数据库进行交互的一种重要方式。JDBC(Java Database Connectivity)是Java API,允许Java应用程序通过Java虚拟机(JVM)与各种数据库建立连接。在...
标题 "Access_JDBC30" 暗示了这是一个与Microsoft Access数据库相关的Java JDBC驱动程序。JDBC(Java Database Connectivity)是Java编程语言中用于连接和操作数据库的标准接口。这个jar包,"Access_JDBC30.jar",...
在IT行业中,数据库是至关重要的组成部分,而SQL Server作为一款广泛应用的关系型数据库管理系统,它的连接与操作离不开JDBC(Java Database Connectivity)驱动。本篇将详细介绍如何下载和安装sqljdbc4,这是...
Access的JDBC驱动是Java数据库连接(Java Database Connectivity, JDBC)的一种实现,它允许Java程序与Microsoft Access数据库进行交互。在JDK 1.8之后,Oracle公司不再默认提供对ODBC(Open Database Connectivity...
Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它提供了一种标准化的方法,让程序员可以使用SQL语句访问数据库,而无需关心具体的数据库实现细节。在Java应用...