回 帖 发 新 帖 刷新版面

主题:[讨论]新手求助,毕业设计调试时出现以下问题.请高手救命啊!!!!!!!

新手求助,毕业设计调试时出现以下问题.请高手救命啊!!!!!!!


“/MisStock”应用程序中的服务器错误。
--------------------------------------------------------------------------------

ExecuteReader 需要打开的并且可用的连接。该连接的当前状态是 Closed。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidOperationException: ExecuteReader 需要打开的并且可用的连接。该连接的当前状态是 Closed。

源错误: 


行 34: {
行 35: ///执行存储过程
行 36: sqlHelper.RunProc("Pr_GetUserLogin",paramList,out dr);
行 37: }
行 38: catch(Exception ex)


源文件: c:\inetpub\wwwroot\misstock\components\user.cs 行: 36 

堆栈跟踪: 


[InvalidOperationException: ExecuteReader 需要打开的并且可用的连接。该连接的当前状态是 Closed。]
System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean executing)
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
SQLHelper.SQLHelper.RunProc(String procName, SqlParameter[] prams, SqlDataReader& dataReader)
MisStock.Components.User.GetUserLogin(String sUserName, String sPassword) in c:\inetpub\wwwroot\misstock\components\user.cs:36

[Exception: ExecuteReader 需要打开的并且可用的连接。该连接的当前状态是 Closed。]
MisStock.Components.User.GetUserLogin(String sUserName, String sPassword) in c:\inetpub\wwwroot\misstock\components\user.cs:42
MisStock.Default.LoginBtn_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\MisStock\Default.aspx.cs:82
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573

回复列表 (共4个回复)

沙发

这是user.cs的源程序 
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Security.Cryptography;
using SQLHelper;

namespace MisStock.Components
{
/// <summary>
/// User 的摘要说明。
/// </summary>
public class User
{
public static readonly int USERTYPESUPERADMIN = 0;
public static readonly int USERTYPEADMIN = 1;
public static readonly int USERTYPENORMAL = 2;

public SqlDataReader GetUserLogin(string sUserName,string sPassword)
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();

///定义保存从数据库获取的结果的DataReader
SqlDataReader dr = null;

///创建访问数据库的参数 
SqlParameter[] paramList = {
sqlHelper.CreateInParam("@UserName",SqlDbType.VarChar,200,sUserName),
sqlHelper.CreateInParam("@Password",SqlDbType.VarChar,255,sPassword)
};

try
{
///执行存储过程
sqlHelper.RunProc("Pr_GetUserLogin",paramList,out dr);
}
catch(Exception ex)
{
///抛出执行数据库异常
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);


///返回从数据库获取的结果
return(dr);
}

public SqlDataReader GetUsers()
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();

///定义保存从数据库获取的结果的DataReader
SqlDataReader dr = null;

try
{
///执行存储过程
sqlHelper.RunProc("Pr_GetUsers",out dr);
}
catch(Exception ex)
{
///抛出执行数据库异常
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);


///返回从数据库获取的结果
return(dr);
}

public SqlDataReader GetSingleUser(int nUserID)
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();

///定义保存从数据库获取的结果的DataReader
SqlDataReader dr = null;

///创建访问数据库的参数 
SqlParameter[] paramList = {
sqlHelper.CreateInParam("@UserID",SqlDbType.Int,4,nUserID)
};

try
{
///执行存储过程
sqlHelper.RunProc("Pr_GetSingleUser",paramList,out dr);
}
catch(Exception ex)
{
///抛出执行数据库异常
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);


///返回从数据库获取的结果
return(dr);
}

public int AddUser(string sUserName,string sPassword,int nUserType)
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();

///创建访问数据库的参数 
SqlParameter[] paramList = {
sqlHelper.CreateInParam("@UserName",SqlDbType.VarChar,200,sUserName),
sqlHelper.CreateInParam("@Password",SqlDbType.VarChar,255,sPassword),
sqlHelper.CreateInParam("@UserType",SqlDbType.Int,4,nUserType)
};

try
{
///执行存储过程
return(sqlHelper.RunProc("Pr_AddUser",paramList));
}
catch(Exception ex)
{
///抛出执行数据库异常
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);

}

public void UpdateUserPwd(int nUserID,string sPassword)
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();

///创建访问数据库的参数 
SqlParameter[] paramList = {
sqlHelper.CreateInParam("@UserID",SqlDbType.Int,4,nUserID),
sqlHelper.CreateInParam("@Password",SqlDbType.VarChar,255,sPassword)
};

try
{
///执行存储过程
sqlHelper.RunProc("Pr_UpdateUserPwd",paramList);
}
catch(Exception ex)
{
///抛出执行数据库异常
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);

}

public void DeleteUser(int nUserID)
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();

///创建访问数据库的参数 
SqlParameter[] paramList = {
sqlHelper.CreateInParam("@UserID",SqlDbType.Int,4,nUserID)
};

try
{
///执行存储过程
sqlHelper.RunProc("Pr_DeleteUser",paramList);
}
catch(Exception ex)
{
///抛出执行数据库异常
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);

}

/// <summary>
/// 用户加密函数
/// </summary>
public static String Encrypt(string password) 
{
Byte[] clearBytes = new UnicodeEncoding().GetBytes(password);
Byte[] hashedBytes = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);

return BitConverter.ToString(hashedBytes);


/// <summary>
/// 判断用户的类型:
/// 0:超级管理员;
/// 1:管理员;
/// 2:普通用户。
/// </summary>
/// <param name="sUserID"></param>
/// <returns>UserType</returns>
public static int IsAuthorityAdmin(string sUserID)
{
///用户ID为空
if(sUserID == null || sUserID == "")
{
return(Int32.MaxValue);
}

///获取用户所属的类型
string sUserType = "";
User user = new User();
SqlDataReader recu = user.GetSingleUser(Int32.Parse(sUserID));
if(recu.Read())
{
///读取用户类型
sUserType = recu["UserType"].ToString();
}
recu.Close();
if(sUserType == "")
{
return(Int32.MaxValue);
}
return(Int32.Parse(sUserType));
}
}
}

板凳

连接关闭了

3 楼


我知道是连接关闭了,可是我不知道在哪把连接打开....

4 楼

链接已经关闭了
应该在调用ExecuteReader()之前将链接打开
yourconnection.open();

我来回复

您尚未登录,请登录后再回复。点此登录或注册