SQL Timeout 的问题之解决方法

一般来说返回DataSet的函数都是这么写
public DataSet getrs(string sql)
{
System.Data.SqlClient.SqlConnection = new SqlConnection();
System.Data.SqlClient.SqlDataAdapter comm=new SqlDataAdapter(sql,conn);
System.Data.DataSet ds=new DataSet();
comm.Fill(ds);
return ds;
}
其中 new SqlConnection()里面放连接数据库的字符串,
参数sql是查询语句,例如sql="select * from s_user"等等
但是如果这个查询时间比较长(因为表的里数据比较大,而且查询语句里还调用了函数),系统将会返回超时错误,不知道在哪里控制

在new SqlConnection()里面放连接数据库的字符串里面放Connect Timeout=300;是不对的,因为这是运算的时间,不是连接数据库的时间。

所以应该这么写返回DataSet的语句:
        public static DataTable ExecuteQuery(string sql,int cmdTimeout)
        {
                SqlCommand cmd;
                SqlConnection conn;
                conn = new SqlConnection();
                cmd = new SqlCommand(sql, conn);
                conn.Open();
                cmd.CommandTimeout = cmdTimeout;
                SqlDataAdapter Ada = new SqlDataAdapter();
                Ada.SelectCommand = cmd;

                DataSet ds = new DataSet();
                Ada.Fill(ds);
                conn.Close();
                conn.Dispose();
                cmd.Dispose();
                return ds.Tables[0];


        }

转载于:https://www.cnblogs.com/Luoke365/archive/2007/05/29/763898.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值