Sem*_*ian 0 c# asp.net stored-procedures
我正在运行一个存储过程,但在运行它时显示如下错误
超时已过。操作完成前超时时间已过或服务器未响应。
我已经设置了我的网络配置
<add name="SAMPLECONNECTION" connectionString="Data Source=ADMIN\SQLEXPRESS;Initial Catalog=PFGRT;Persist Security Info=True;MultipleActiveResultSets=true;User ID=sa;connect Timeout =1000000;Password=PASSWORD"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我也试过像设置一样connect Timeout = 0;
,但我得到了同样的错误。
我该如何解决?
我的存储过程调用类
public DataSet adFeedBackReportFacultyWise(string SetID, string FacultyID, string SubjectID,string groupid)
{
DbUtil du = new DbUtil();
Dictionary<string, SqlParameter> cmdParameters = new Dictionary<string, SqlParameter>();
cmdParameters["SetID"] = new SqlParameter("SetID", SetID);
cmdParameters["FacultyID"] = new SqlParameter("FacultyID", FacultyID);
cmdParameters["SubjectID"] = new SqlParameter("SubjectID", SubjectID);
cmdParameters["groupid"] = new SqlParameter("groupid", groupid);
return du.ExecuteQuery("adFeedBackReportFacultyWise", cmdParameters);
}
Run Code Online (Sandbox Code Playgroud)
我的 DButil 类是
public class DbUtil
{
string connection = ConfigurationManager.ConnectionStrings["gatikkcmsConnectionString"].ConnectionString;
public SqlDataAdapter ad;
public DataTable dt = new DataTable();
SqlConnection conn;
SqlCommand cmd = new SqlCommand();
public DbUtil()
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["gatikkcmsConnectionString"].ConnectionString);
cmd = null;
}
public SqlConnection getConnection()
{
return new SqlConnection(connection);
}
public int ExecuteCommand(string storedProcName, Dictionary<string, SqlParameter> procParameter)
{
int rc;
using (SqlConnection cn = getConnection())
{
cn.Open();
// create a SQL command to execute the stored procedure
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = storedProcName;
// assign parameters passed in to the command
foreach (var procParameters in procParameter)
{
cmd.Parameters.Add(procParameters.Value);
}
rc = cmd.ExecuteNonQuery();
}
cn.Close();
}
return rc;
}
}
Run Code Online (Sandbox Code Playgroud)
问题不在于连接超时(与数据库服务器建立连接所花费的时间),而在于命令超时(执行命令所花费的时间)。
在您的DbUtil
课程中,将命令超时设置为SqlCommand
如下所示:
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandTimeout = 120; //set timeout - use appropriate value
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = storedProcName;
// assign parameters passed in to the command
foreach (var procParameters in procParameter)
{
cmd.Parameters.Add(procParameters.Value);
}
rc = cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
检查存储过程的性能也是值得的。
归档时间: |
|
查看次数: |
10734 次 |
最近记录: |