java操作oracle程序,高手帮看下这程序?
发布网友
发布时间:2022-04-23 09:56
我来回答
共4个回答
热心网友
时间:2022-04-09 13:42
1 和你程序代码无关,错误是因为emp 定义了触发器,需要按照触发器的规则去更新数据才可以成功执行,否则就报出以上错误,具体要看你数据库里emp表上定义的触发器到底是怎么写的/
2 第1句是判断当前的conn的自动提交类型是true还是flase,如果true,则执行一句自动commit一次;第2行注释是强行将conn设置为false,就是手动提交,这样保证执行的事务性,在方法最后自己写commit,要么都成功,要么都失败,这也是代码开发时很好的习惯。
3 需要根据你的触发器规则去update数据,不是任意的数据都可以更新,有时候还可能要更新别的表数据这个触发器才能绕过
热心网友
时间:2022-04-09 15:00
boolean flag = conn.getAutoCommit();//帮忙解释下这句程序是什么意思?
查看当前是否设置了默认事务模式-自动提交,即执行一个sql(增删改)提交一次;
conn.setAutoCommit(false);//这句程序是什么意思?
设置了新的事务提交方式,就是不自动提交了。用户自己控制事务,所以之后才有 conn.commit();语句。
conn.setAutoCommit(flag);//这句程序是什么意思?
这句写在finally里面。就是,在这段代码执行完以后,将事务设置回执行这段代码之前的方式。之前是自动提交的,就设置回自动提交,用户控制的就设置回用户控制。
至于你更新数据失败的原因,触发器SCOTT.RESTRICT_SAL定义于表emp.sal上,你可查看下该触发器逻辑是否正确,与上述代码执行无关。
热心网友
时间:2022-04-09 16:35
conn.setAutoCommit(false); 设置它为非自动提交,我们老师是这样解释的。
热心网友
时间:2022-04-09 18:26
那句意思是是否自动提交更新。
另外错误的原因是:数据库中定义的触发器 'SCOTT.RESTRICT_SAL' 有编译错误