system.data.sqlclient.sqlexception:timeout expired

今天在测试一个通过wcf服务查询数据的程序时,一直出现这个错误。这个错误是在:

catch (System.ServiceModel.CommunicationException e)             

 {

      XtraMessageBox.Show("对不起!客户端获取服务数据通信报错!请查看服务是否正常!"+e.HelpLink+","+e.InnerException+","+e.Message+","+e.StackTrace+","+e.TargetSite+"", "系统提示", MessageBoxButtons.OK,                                                    MessageBoxIcon.Information);       }             

 开始我一直在客户端找原因,以为是调用服务的时候超时,经过一天半的纠结,崩溃,最后找出了,是由于执行sql语句或者存储过程时,因为涉及运算量巨大,所有超时。这个超时被服务端捕获到,然后传递到了客户端,所有在客户端一直会弹出这个错误。

解决办法:

using (SqlConnection conn = new SqlConnection(connectionString))       

 {          conn.Open();     

            DataTable dt = new DataTable();            

           SqlCommand cmd = new SqlCommand();      

           cmd.CommandType = CommandType.StoredProcedure;    

           cmd.CommandText = cmdText;       

           cmd.Connection = conn;    

           cmd.CommandTimeout = 300;//给执行加了个时间    

           if (paras != null)            

       {                   

        foreach (SqlParameter p in paras)             

                cmd.Parameters.Add(p);            

       }               

      try      

           {                  

          SqlDataAdapter da = new SqlDataAdapter(cmd);        

               da.Fill(dt);       

          }              

     catch (Exception ex)                 {  throw ex;  }      

         finally                

     {  cmd.Dispose();}            

      return dt;        

     }

查询数据量一定时,除了算法优化,查询速度还跟电脑的cpu等配置有关。

转载于:https://www.cnblogs.com/HedgehogBlog/p/3490668.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值