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

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

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表不受数据源异常的影响,所以不会出错了.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值