我是c#的新手,想在sql server数据库中调用store过程,为此目的写下这段代码:
using (SqlConnection con = new SqlConnection("Data Source=ipaddress;Initial Catalog=database;User ID=userid;Password=password;"))
{
using (SqlCommand cmd = new SqlCommand("exec web.sp_getTotalBillPayam "+Convert.ToInt64(phoneNumber) +",'"+password.Trim()+"',72107603,1067", con))
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
...
当运行该代码时,每件事都没问题,但是存储过程没有返回给我任何结果,转到调试我在这行中实现了运行:
SqlDataReader reader = cmd.ExecuteReader();
但调试器没有进入下一行代码并等待该行运行结束,5分钟后该行未完成并且没有进入下一行代码,会发生什么?我该如何解决这个问题?谢谢。
答案 0 :(得分:1)
您的命令未附加到您的连接 - 您使用参数是危险的。试试这个:
编辑:对不起,您的命令附加到连接,没有看到被传入。无论哪种方式,这是调用存储过程的正确模式
using (SqlConnection con = new SqlConnection("Data Source=ipaddress;Initial Catalog=database;User ID=userid;Password=password;")) {
con.Open();
using (SqlCommand cmd = con.CreateCommand()) {
cmd.CommandText = "web.sp_getTotalBillPayam";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
//repeat this for each parameter
var parameter = cmd.CreateParameter();
parameter.ParameterName = "PhoneNumber"; //this must match whatever your parameters are to your stored proc
parameter.DbType = System.Data.DbType.Int64;
parameter.Direction = System.Data.ParameterDirection.Input;
parameter.Value = phoneNumber;
cmd.Parameters.Add(parameter);
...
//if you have an OUTPUT result from your proc, add a a parameter called RETURNS with a direction of ParameterDirection.Return and check value AFTER executing
using (SqlDataReader reader = cmd.ExecuteReader()) {
//if your results are a SELECT query they will be here
}
}
}