the*_*gul 3 c# asp.net methods runtime-error
我已经搜索并尝试了所有的东西,但无法想出这个.我想做一些简单的事情,但好像我做错了什么.基本上,任何已经存款的用户,我想要返回true,如果他们没有,我想返回false.我想这应该很容易,但我对此感到难过.
这是错误:
ConnectionString属性尚未初始化.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.InvalidOperationException:尚未初始化ConnectionString属性.
来源错误:
Line 59: Cmd.Parameters.AddWithValue("@UserID", userId);
Line 60: con.Open();
Line 61:
Line 62: result = (int)Cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪的顶部:
[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
这是我返回true或false的方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
任何关于此的帮助/指导将非常感激.
Kan*_*ane 10
如果您的配置中有连接字符串,请执行此操作
<connectionStrings>
<add name="ConnectionString" connectionString="data source=.;Initial Catalog=MyDatabase;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
然后,您将需要使用此方法来访问它 System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
您还应该在using语句中包装数据访问,这样就不会泄漏连接并使池泛滥.这是使用语句的更新示例.
public static bool HasDeposit(int userId)
{
//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.
const string queryTransaction = "SELECT COUNT(UserID) FROM Transaction WHERE TransactionTypeID = 6 AND UserID = @UserID";
var constr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (var con = new SqlConnection(constr))
{
using (var cmd = new SqlCommand(queryTransaction, con))
{
cmd.Parameters.AddWithValue("@UserID", userId);
con.Open();
var 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.
return result > 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37762 次 |
最近记录: |