首页 新闻 会员 周边 捐助

ADO.NET問題(ORA-01453)

0
悬赏园豆:10 [已关闭问题] 关闭于 2007-12-26 11:39
<STRONG><FONT size=5><FONT size=3>在執行事務時,發生下面錯誤,哪位大蝦遇到過,賜教一二:<BR>ORA-01453: SET TRANSACTION 必須是交易中的第一個敘述句</FONT> </FONT></STRONG> <H2><FONT size=3>代碼如下:</FONT></H2> <P>using(OracleConnection conn = new OracleConnection(new ConnDBString.ConnDBStringConfig()["4"]))<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;conn.Open();<BR>&nbsp;&nbsp;&nbsp;&nbsp;OracleTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;OracleCommand cmd = new OracleCommand("SELECT * FROM DUAL");<BR>&nbsp;&nbsp;&nbsp;&nbsp;cmd.Connection = conn;<BR>&nbsp;&nbsp;&nbsp;&nbsp;cmd.Transaction = trans;<BR>&nbsp;&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.ExecuteNonQuery();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.CommandText = "SELECT * FROM DUAL";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.ExecuteNonQuery();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.Commit();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;catch(Exception ex)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.Rollback();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new Exception(ex.Message);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</P> <P>}</P>
问题补充: 同一句sql執行兩次和執行select,只是在測試事務! 我已經初步知道哪里出錯了,但是不知道為什么會出錯。 那位大俠知道,請賜教! 錯誤是在我把事務隔離級別(transaction isolation level)設置為 ReadCommand。 語句如下:OracleTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted); 用頁面測試就會出錯!
陳龑的主页 陳龑 | 菜鸟二级 | 园豆:215
提问于:2007-12-08 09:53
< >
分享
所有回答(4)
0
我们是用sql server 数据库的
刘柏平 | 园豆:205 (菜鸟二级) | 2007-12-08 10:10
0
我用的sql server 在执行查询的时候也用事务吗?我没用过 我只有在更新数据或者在插入数据的时候才用到事务 cmd.ExecuteNonQuery(); cmd.CommandText = "SELECT * FROM DUAL"; cmd.ExecuteNonQuery(); 同样的语句还提交了两次?没明白 PS:如有错误,请后面的各位大侠指正
伊牛娃 | 园豆:207 (菜鸟二级) | 2007-12-08 10:29
0
跟楼上同解,怎么执行两次命令?
(心)Shing Ye | 园豆:125 (初学一级) | 2007-12-08 21:39
0
select而已,不需要用到事务吧?
Klesh Wong | 园豆:780 (小虾三级) | 2007-12-09 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册