我已经搜索并尝试了一切,但无法解决这个问题。我想做的事情很简单,但似乎我做错了什么。基本上,任何存款用户,如果他们已经存款,我想返回true,如果没有,则返回false。我想这应该很容易,但我对此感到困惑。
以下是错误信息:
ConnectionString属性未初始化。
说明:在当前Web请求的执行过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误和代码中的来源的更多信息。
异常详细信息:System.InvalidOperationException: ConnectionString属性未初始化。
源错误:
任何关于此事的帮助/指导将不胜感激。
以下是错误信息:
ConnectionString属性未初始化。
说明:在当前Web请求的执行过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误和代码中的来源的更多信息。
异常详细信息:System.InvalidOperationException: ConnectionString属性未初始化。
源错误:
Line 59: Cmd.Parameters.AddWithValue("@UserID", userId);
Line 60: con.Open();
Line 61:
Line 62: result = (int)Cmd.ExecuteScalar();
以下是堆栈跟踪的顶部:
[InvalidOperationException: ConnectionString属性尚未初始化。] System.Data.SqlClient.SqlConnection.PermissionDemand() +4879939 System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117 System.Data.SqlClient.SqlConnection.Open() +122
这是我的方法,用于返回真或假:
public static bool HasDeposit(int userId)
{
int result = 0;
//since executeScalar is intended to retreive only a single value
//from a query, we select the number of results instead of the email address
//of each matching result.
string queryTransaction = "SELECT COUNT(UserID) FROM Transaction WHERE TransactionTypeID = 6 AND UserID = @UserID";
string constr = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
SqlConnection con = new SqlConnection(constr);
SqlCommand Cmd = new SqlCommand(queryTransaction, con);
Cmd.Parameters.AddWithValue("@UserID", userId);
con.Open();
result = (int)Cmd.ExecuteScalar();
//returning a boolean comparator works like this :
//will return true if the result is greater than zero, but false if it is not.
con.Close();
return result > 0;
}
任何关于此事的帮助/指导将不胜感激。
AppSettings
并没有错,只是通常情况下连接字符串在ConnectionStrings
中,就像 Kane 的回答中所示。只要代码在配置文件的相应部分查找定义的值,一切都匹配。 - HABO