关于连接问题或数据库关闭的OracleException

时间:2015-12-23 05:17:47

标签: c# asp.net oracle oracleexception

说我已关注query

private void updateusers()
{
    List<int> listRecords=new List<int>();
    string strQuery="select * from table where role='Admin' and logged_in<=sysdate-1";
    OracleCommand com=new OracleCommand(strQuery,objConnection);
    OracleDataReader reader=com.ExecuteReader();
    if(reader.HasRows)
    {
         while(reader.read())
         {
              listRecords.Add(int.Parse(reader["Row_ID"].toString()));
         }
         int i=0;
         foreach(int row in listRecords)
         {
              try
              {
                    OracleCommand command=new OracleCommand();
                    command.Connection=objConnection;
                    command.CommandText="Update table set Status='Y' where Row_ID="+listRecords[i];
                    command.CommandType=System.Data.CommandType.Text;
                    command.ExecuteNonQuery();
              }
              catch(OracleException ex)
              {
                    //log the exception
              }
         }
    }
}

现在我的问题是,让我们假设选择查询提取 2000 记录,foreach将继续更新每个record并假设在第{500} record 数据库连接丢失或出于某种原因说数据库已关闭。现在在这些场景中我想迭代或尝试更新相同的记录3次,如果第3次失败,请退出foreach-loop并停止执行update命令以保留 1500条记录

  

那么有没有什么特别的方法来识别这些类型的Oracle异常或更好地说环境异常?是否   OracleException为这些类型提供任何特定的messageCode   例外?

1 个答案:

答案 0 :(得分:1)

您可以使用ErrorCode类的OracleException属性来识别特定类型的错误。