在JDBC中也同样支持事务的处理,但所有的事务处理都需要依靠Connection完成。否则在事务处理的过程中,会造成在错误之前的代码运行了,而错误之后的代码没有运行的情况,这在实际开发的过程中是不允许出现的,否则会造成很大的损失。
在Connection *** 作中所有的数据库更新属于立即更新,如果想要进行事务的 *** 作,则首先应该停止自动更新 *** 作,之后所有的更新则通过commit()进行提交,如果有问题则回滚。
这个还不简单了...你创建出statement 后调用执行方法..写个嵌套的3层循环..每次都去执行这个sql就好了...
给你个代码提示找个改改就能实现..
elietian
说的不对..在jdbc中除了现在一下巨小的数据库如hsqldb等..一般的autocommit是true的
所以每次不用commit
//获得连接.创建statement
for(long p =0p<125p++){
for(long g =0 g<5g++){
for(long d= 0 d<9d++)
{
String sql="insert into Entity values("+String.valueof(p)+","+Stirng.valueof(g)+","+String.valueof(d)+",0,100,0)"
st.e....(sql)啥方法的去执行//好久不写了忘记..呵呵
}
}}
//关闭statement 关闭连接.
上述为伪代码...思想如此..祝你编写开心..这样吧..改long..
首先自增ID本来就被设计成为不参与数据库事务的,原因是什么呢?为了防止ID生成阻塞和防止ID错乱,因为对了一张表来说,不是只有你一个线程在申请ID,其他的新增线程了也在申请ID,假设你在事务中第一次申请到了ID=1,但这时你的事务并没提交,也就是这个等于1的ID现在并没有真正入库,想想这时别人的进程也去申请同一个表的ID时,ID生成器该给他1还是2?当然是2啦!如果你这时你回滚你的事务,假设事务把ID=1回滚了,给回ID生成器,ID生成器还能把它给出去别人用么?肯定不行啦,为啥,如果这时那个上次拿到2的线程这次又去拿,不是要拿到1了?说好的自增呢?!也许你会说可以等你下次申请ID时给你呀,把3给刚刚那个拿了2的呀,不好意思,数据库会话(SqlSession)一关,谁记得你呀!欢迎分享,转载请注明来源:内存溢出
评论列表(0条)