现在的位置: 首页 > 综合 > 正文

服务器程序中数据访问异常导致出错的教训(.net c#)

2013年10月08日 ⁄ 综合 ⁄ 共 911字 ⁄ 字号 评论关闭

一个服务器程序中有以下内容:

public DataSet GetDataSet(string sql)

 {

     DataSet ds = new DataSet();

     try

     {

         OracleDataAdapter adapter = new OracleDataAdapter(sql, con);

         adapter.Fill(ds);

     }

     catch//(Exception ex)

     {

         Close();

     }

     finally

     {

         Close();//关闭数据库连接

     }

     return ds;

 }

DataSet ds=GetDataSet(str)

foreach (DataRow dr in ds.table[0].Rows)

{

     ...

}

 

服务器程序运行了一段时间后出错,经分析,以上做法有问题,当数据源出现错异常时,致使ds.table[0]为空而造成ds.table[0].Rows无法执行,所以程序出错.

解决的办法很多,最常见的是用try语句,但将以上内容改成以下内容可能是最简洁的.

 

public DataTable  QueryToDT(string sql)

{

           

   DataSet ds = new DataSet();

   DataTable dt = new DataTable();

   try

   {

       OracleDataAdapter adapter = new OracleDataAdapter(sql, con);

       adapter.Fill(ds);

       dt = ds.Tables[0];

}

  catch//(Exception ex)

   {

                Close();

   }

   finally

   {

       Close();//关闭数据库连接

    }

            return dt;

 }

 

 

 

DataTable dt= QueryToDT(str);

foreach (DataRow dr in dt.Rows)

{

   ...

}

现在, dt表不受数据源异常的影响,所以不会出错了.

 

抱歉!评论已关闭.