一般来说返回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;是不对的,因为这是运算的时间,不是连接数据库的时间。
要是System.Data.SqlClient.SqlCommand comm还好办
可以定义comm.CommandTimeout=300,但是我说的这种情况怎么办呢?怎么解决超时的问题,谢谢。

解决方案 »

  1.   

    要不,你自己控制open 和  close吧。。conn.Open();
    comm.Fill(ds);
    conn.Close();
      

  2.   

    public DataSet getrs(string sql)
    {
    System.Data.SqlClient.SqlConnection  conn= new SqlConnection(連接數據這符串);
    System.Data.SqlCommand commd=new SqlCommand(sql,conn);
    System.Data.SqlClient.SqlDatAdapter comm=new SqlDataAdapter(sql,conn);
    comm.CommandType   = commd;
    System.Data.DataSet ds=new DataSet();
    comm.Fill(ds);
    return ds;
    }
      

  3.   

    貌似comm没有CommandType这个属性吧?
      

  4.   

    或者這樣
    public DataSet getrs(string sql)
    {
    System.Data.SqlClient.SqlConnection  conn= new SqlConnection(連接數據這符串);
    System.Data.SqlCommand commd=new SqlCommand(sql,conn);
    System.Data.SqlClient.SqlDatAdapter comm=new SqlDataAdapter(commd);
    System.Data.DataSet ds=new DataSet();
    comm.Fill(ds);
    return ds;
    }
      

  5.   

    不好意思應該是﹕
    comm.SelectCommand= commd;
      

  6.   

    加上了commd.CommandTimeout=300;
    解决了,谢谢,学了一手.