我的网站上有错误,当它在服务器上时。
System.Data ExecuteReader需要一个开放且可用的连接。 连接的当前状态是打开的
private static int OpenCon()
{
int degel = 0;
try
{
ResetCon(true);
if (con.State != ConnectionState.Open)
con.Open();
degel = -1;
}
catch (System.Data.SqlClient.SqlException ex)
{
CloseCon();
if (ex.Errors[0].Number == 53)
{
}
}
return degel;
}
private static void CloseCon()
{
if (con.State != ConnectionState.Closed)
con.Close();
if (cmd == null)
return;
else
cmd.Dispose();
}
private static SqlCommand CreateCmd(string sql, CommandType type)
{
SqlCommand cmd = new SqlCommand();
try
{
cmd.Connection = con;
cmd.CommandType = type;
cmd.CommandText = sql;
cmd.CommandTimeout = 300;
}
catch
{
CloseCon();
}
return cmd;
}
public static DataTable GetTable(string sql)
{
DataTable dt = new DataTable();
try
{
OpenCon();
SqlCommand cmd = CreateCmd(sql, CommandType.Text);
adpt = new SqlDataAdapter();
adpt.SelectCommand = cmd;
adpt.Fill(dt);
CloseCon();
}
catch (Exception ex)
{
CloseCon();
Log.WriteLog("DataBase.GetTable()", ex, HttpContext.Current.Request);
}
return dt;
}
谢谢, 哈尼
答案 0 :(得分:1)
我认为这个错误在您的开发PC上无法重现,是吗?
您不应该使用静态连接,更不要使用ASP.NET。您的DB类只是这类令人讨厌的错误的来源。而是将using
- 语句用于实现IDisposable
的所有内容,例如连接,以确保它尽快关闭(即使出错)。
我不知道我能添加什么,因为这似乎是...的复制品。