连接未关闭。连接的当前状态为已打开
public dataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
//ConnStr = ConfigurationSettings.AppSettings[ "yxrcConnectionString "];
ConnStr = ConfigurationSettings.AppSettings[ "DataBase.ConnectionString "];
}
public dataBase(String Str)
{
try
{
this.ConnStr = Str;
}
catch (SqlException Ex)
{
throw new Exception(Ex.Message);
}
}
#region 打开及关闭数据库链接
/// <summary>
/// 返回SqlConnection对象
/// </summary>
/// <returns> 数据库链接对象 </returns>
public SqlConnection ReturnConn()
{
try
{
SqlConnection Conn = new SqlConnection(ConnStr);
Conn.Open();
return Conn;
}
catch (SqlException Ex)
{
msgInfo(Ex.Message);
throw new Exception(Ex.Message);
}
}
public void Dispose(SqlConnection Conn)
{
if (Conn != null && Conn.State == ConnectionState.Open)
{
Conn.Close();
Conn.Dispose();
}
GC.Collect();
}
public SqlDataReader ExecuteSql_GetReader(String strSQL)
{
SqlConnection Conn = ReturnConn();
SqlCommand Cmd = CreateCmd(strSQL, Conn);
SqlDataReader reader;
try
{
Conn.Open();
Cmd.ExecuteNonQuery();
reader = Cmd.ExecuteReader(CommandBehavior.Default);
return reader;
}
catch (SqlException Ex)
{
msgInfo(Ex.Message);
throw new Exception(Ex.Message);
}
finally
{
// Cmd.Dispose();
// Dispose(Conn);
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
}
}
}
在文件中的写法:
protected void getVoteList()
{
aaDataBase.dataBase db = new rongmeng_DataBase.dataBase();
String sql = "select * from VoteList order by innerID ";
SqlDataReader dr = db.ExecuteSql_GetReader(sql);
StringBuilder vodeList = new StringBuilder( " ");
char s = ' " ';
while (dr.Read())
{
vodeList.Append( " <li> <a href=# οnclick=/ "javascript:window.open( 'Vote.aspx?voteid= " + dr[ "voteid "].ToString() + " ', 'vote ', 'scrollbars=1,width=375 height=380 ')/ "> " +
dr[ "Title "].ToString() + " </a> </li> ");
vodeList.Append(Environment.NewLine);
}
dr.Dispose();
vodeList.Append( " <hr> <li> <a href=MakeVote.aspx> 返回调查投票管理 </a> </li> ");
this.litVoteList.Text = vodeList.ToString();
if (db.ReturnConn().State == ConnectionState.Open)
{
db.Dispose(db.ReturnConn());
}
}
上面是调用的相关函数,但我在调用这个函数时就出现这样的错误:
连接未关闭。连接的当前状态为已打开。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 连接未关闭。连接的当前状态为已打开。
源错误:
行 97: try
行 98: {
行 99: Conn.Open();
行 100: Cmd.ExecuteNonQuery();
行 101: reader = Cmd.ExecuteReader(CommandBehavior.Default);