我在VS里执行这段代码 
OracleConnection ocn = new OracleConnection("data source=orcl;user id=haojie;password=wylwhj");
            string sql = "set autocommit off;  insert into dept values('60','sales','china'); commit;";
            OracleCommand ocm = new OracleCommand(sql,ocn);
            ocn.Open();
            ocm.ExecuteNonQuery();
           
            ocn.Close();
            MessageBox.Show("产生连接,并提交查询1");
然后我在SQLPLUS中查看数据,发现数据已经提交了,但是我的代码中没有提交(commit)命令啊,难道OracleCommand.ExecuteNonQuery()会自动提交COMMIT命令吗?

解决方案 »

  1.   

    的确会自动提交,要说BUG也不见得,应该是提供程序在连接关闭时会自动提交隐式事务,所谓的隐式事务就是你没有显示使用Begin Tran打开的事务,也只有Oracle有隐式事务的概念。
      

  2.   

    string sql = "set autocommit off; insert into dept values('60','sales','china'); commit;";
    你的SQL语句里有COMMIT;语句
    这是提交命令....
      

  3.   

    楼上的各位,可能是我不小心把COMMIT加上去了,在我的代码中我是没有加COMMIT的,好像还是会提交的!
      

  4.   


    string sql=set autocommit off; insert into dept values('60','sales','china'); commit;";
    红色的就是提交 朋友