private void ImagebuttonOK_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
string stringSQL, stringTmp,stringLimitYear;
OracleConnection OracleConnectionInsert;
OracleTransaction OracleTransactionInsert;
OracleCommand OracleCommandInsert;
// 设置数据连接
                        //Oracle_Conn1是我定义的类。类中有GetConnection()和GetTrans()函数,下面我会写出来。
OracleConnectionInsert = Oracle_Conn1.GetConnection();
OracleTransactionInsert = Oracle_Conn1.GetTrans(OracleConnectionInsert);
//stringSQLSelect是数据查询语句,语句正确我不写了。                        
OracleCommand OracleCommandSelect = new OracleCommand(stringSQLSelect, OracleConnectionInsert, OracleTransactionInsert);
stringLimitYear = (string)OracleCommandSelect.ExecuteScalar();
                        ......
                }//下面是Oracle_Conn1的两个函数:
public OracleConnection GetConnection()
{
OracleConnection OracleConnectionTrans;
                        //g_StringConnString是数据库连接字符串
OracleConnectionTrans = new OracleConnection(g_StringConnString);
OracleConnectionTrans.Open();
return OracleConnectionTrans; }
public OracleTransaction GetTrans(OracleConnection OracleConnectionTrans)
{
try
{
OracleTransactionBase = OracleConnectionTrans.BeginTransaction(IsolationLevel.ReadCommitted);
////////这里就是出错的地方,有时会出错有时不会,
////////好象是执行了一类型的操作,马上执行另一类型的操作就会出错,
////////如果不做任何操作不动鼠标过段时间又不会错,
////////请高手指点,谢谢!
}
catch
{
OracleConnectionTrans.Close();
}
return OracleTransactionBase;
}

解决方案 »

  1.   

    执行了  .BeginTransaction  ,要么后面就执行  Commit , 要么就执行 RollBack
      
      

  2.   

    我只执行到:OracleCommand OracleCommandSelect = new OracleCommand(stringSQLSelect, OracleConnectionInsert, OracleTransactionInsert);
    调用GetTrans()时,就被try...catch...关闭我的数据库连接不让我更新,
    问题是有时候可以更新有时候不行,我在页面代码中当执行成功用Commit(),有错误用RollBack(),
    谢谢您的回答,你能解释更清楚点吗?帮我分析一下谢谢!
      

  3.   

    必须保证打开了的事务, 一定有地方关闭它.try 成功后, 应该提交事务, 而只是在 catch 中回滚事务
      

  4.   

    您们回答的都有点道理,我也仔细看了代码,调试了一下,
    我现在再把刚刚调试发现的问题,
    来补充下上面的问题:
    我可以查询但有时候更新会出错,也就是这句出错:OracleCommand OracleCommandSelect = new OracleCommand(stringSQLSelect, OracleConnectionInsert, OracleTransactionInsert);
    我刚刚启动写了用户登入日志外,其它的什么更新都没有做,就执行这句也会出错。有时候又没有问题,这个问题是最近一个星期才会的,以前都不会,您们说有可能是数据库自身的问题吗?还是这代码有问题?