首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

数据库超时,该怎么解决

2011-12-31 
数据库超时连接正常当处理oAdapterNewSqlDataAdapter(oCmd)oAdapter.Fill(oDataSetSQL.ReturnedDataSet)

数据库超时
连接正常
当处理
oAdapter   =   New   SqlDataAdapter(oCmd)
oAdapter.Fill(oDataSetSQL.ReturnedDataSet)

执行fill的时候,显示数据库超时

本地服务器没事


[解决办法]
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];


}

热点排行