rollback执行了,但数据库数据却不对,WHY? 有可能myConn.rollback();本身执行失败了,多打点log,仔细看看每一步执行的结果 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 myConn.commit();之后能不能rollback? myConn.commit()不需要rollback()了吧因为前面myConn.setAutoCommit(false)就代表事务回滚了 dmhorse(dmhorse)大哥说的对,你已经提交了再rollback也没用了。 你要再最后的finally再commit。 可是在循环里ad1.add();语句出现异常,myConn.commit();不是就不执行了吗? 楼上的各位不要误人子弟,第一,既然已经走到rollback,说明前面已经出异常了,所以commit是肯定不会被执行到的.第二,怎么可能在finally里进行commit,那不是任务情况都要commit了,那还要rollback来做什么? create table p_test( cno int not null auto_increment, name varchar(50) not null, index index_name_idx01(name), primary key(cno), unique key(name) ) TYPE=INNODB; DBConnection db = new paytv.DBConnection(); if(!db.CmdConnectDB()) { System.out.println("Exiting,no connection"); return; } Connection con = db.Cmdgetcon(); con.setAutoCommit(false); try { String sql ="insert into p_test values(null,'abc')"; java.sql.Statement st = con.createStatement(); System.out.println("Execute insert duplicated row"); st.executeUpdate(sql); st.executeUpdate(sql); con.commit(); } catch(java.sql.SQLException e) { System.out.println("Sql error,rollbacking" + e.getMessage()); con.rollback(); } catch(Exception e) { System.out.println("Error,rollbacking" + e.getMessage()); con.rollback(); } finally { //con.setAutoCommit(true); db.CmdCloseDB(); }If setAutoCommit(true),it would generate 1 record.If not,nothing happen. Have u try run the sql statment in informix database?Test the rollback function abnormal or not.May u paste the remained code here? 程序功能是从文件里一行一行读记录,将其插入数据库。文件里有4行,最后一行故意写了一个错误记录,不能插入数据库。结果执行时,插入第4行时出现了异常,rollback也执行了,可前3行记录还是插入了数据库里,而不是一起被rollback掉。 程序就这么多,这是在Expresso框架下写的程序。Tomcat+INFORMIX 正则表达式 一道基础算法题 jdbc连接sybase出现乱码,求解??? 问你一个关于java5数字签名的事情 如何在JScrollPane放置JPanel 关于循环中出现异常,剩余的循环怎么继续的问题! JTable 问题 java的编译器都用什么配置啊? (求助)运行出错,请各位高手指点 JavaTM Web Start 这个东东是做什么的 关于JNI的问题....看到此贴者必须回贴(水贴可矣),违者斩立决... 怎样让println()输出带有引号("")的字符串?
之后能不能rollback?
因为前面myConn.setAutoCommit(false)就代表事务回滚了
第一,既然已经走到rollback,说明前面已经出异常了,所以commit是肯定不会被执行到的.
第二,怎么可能在finally里进行commit,那不是任务情况都要commit了,那还要rollback来做什么?
cno int not null auto_increment,
name varchar(50) not null,
index index_name_idx01(name),
primary key(cno),
unique key(name)
) TYPE=INNODB;
DBConnection db = new paytv.DBConnection();
if(!db.CmdConnectDB())
{
System.out.println("Exiting,no connection");
return;
}
Connection con = db.Cmdgetcon();
con.setAutoCommit(false);
try
{
String sql ="insert into p_test values(null,'abc')";
java.sql.Statement st = con.createStatement();
System.out.println("Execute insert duplicated row");
st.executeUpdate(sql);
st.executeUpdate(sql);
con.commit();
}
catch(java.sql.SQLException e)
{
System.out.println("Sql error,rollbacking" + e.getMessage());
con.rollback();
}
catch(Exception e)
{
System.out.println("Error,rollbacking" + e.getMessage());
con.rollback();
}
finally
{
//con.setAutoCommit(true);
db.CmdCloseDB();
}If setAutoCommit(true),it would generate 1 record.
If not,nothing happen.
Test the rollback function abnormal or not.May u paste the remained code here?