JAVA-JDBC连接数据库一个问题:我采用通过事务提交添加属性值,为啥没有虽然没有添加,但是ID自动增加
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA-JDBC连接数据库一个问题:我采用通过事务提交添加属性值,为啥没有虽然没有添加,但是ID自动增加相关的知识,希望对你有一定的参考价值。
老师说的是:在数据库添加上面,特别是用在银行转账实例最好用事务提交,因为当这边添加语句(如转账)时遇到系统异常或是网络异常,就不会出现一个执行了,另外一边没有执行(转账的就是如果这边转账好,于到异常,但是这边又扣了,那么没有收到)。只有当两边同时正确执行才执行;一边执行,另外一边没有执行两边都不执行,自动回滚。
如下语句:我有两个插入语句,如果故意把其中一条输入错误,虽然两条都不能添加;单是我的数据表里面的id序列却自动增加了,下面的34.35.然后我错误的运行了两次,自动增加了ID主键的序列。如下图:
问题:我的id序列在数据库里面设置了自动增加和主键。怎么我下面的代码中,插入一条语句,使得我错误一条运行后,id'的序列号也不能增加!!这样才是真正的事务添加啊!!谢谢了
//通过事务提交添加属性值
private void TransactionAddGradeByName() throws Exception
Connection connection = ConnectionStart.getConnection();
System.out.println("事务添加方法数据驱动程序加载成功");
System.out.println("事务添加方法数据库连接成功!");
//关闭自动提交
connection.setAutoCommit(false);
Statement statement = connection.createStatement();
statement.executeUpdate("insert into grade(name,score)"+"values('n9',100);");
statement.executeUpdate("insert into grade(name,score)"+"values('n10',110);");
// statement.executeBatch();//执行批量SQL语句
connection.commit();//手动提交
connection.setAutoCommit(false);
//关闭JDBC对象
ConnectionClose.close(statement,connection);
queryAll(); //
为什么没有回滚呀? 但是我其中一条插入语句错误,另外一条也没有执行,只是id编号自动增加了两个!不知道这算不算回滚呢?
~那如果想实现真正的回滚,连主键编号都不会增加该加入什么语句呢?
以上是关于JAVA-JDBC连接数据库一个问题:我采用通过事务提交添加属性值,为啥没有虽然没有添加,但是ID自动增加的主要内容,如果未能解决你的问题,请参考以下文章