存储过程不工作,正在停止
本文关键字:工作 存储过程 | 更新日期: 2023-09-27 18:28:38
我正在项目中为scheduler
运行一段代码。但它并没有如预期的那样发挥作用。
private void Initiate_User(string strEmpCard)
{
//conn.Open();
ObjPriCmd = new SqlCommand("exec [sp_c_Initiate_Clearance] " + strEmpCard.ToString() + "", conn);
ObjPriCmd.ExecuteNonQuery();
}
调试程序在调试完我的ExecuteNonQuery()
行后停止并打开一个窗体。我也无法追踪错误。这里怎么了??
更新
我的错误查询
insert into p_emp_clearance_hdr
(Emp_mkey,
Emp_card_no,
RA_1,
RA_2,
Depatment,
Sub_Department,
Date_of_Joining,
Resignation_date,
Last_Working_Days,
UserId)
select
em.mkey,
em.emp_card_no,
em.Reporting_To,
em.Reporting_To2,
em.Department_mkey,
em.SubDept_mkey,
convert(varchar(10), em.resig_date, 103) resig_date,
convert( varchar(10), em.Dt_Of_Join, 103) Dt_Of_Join,
convert(varchar(10), em.Dt_of_leave, 103) Dt_of_leave,
um.mkey
from emp_mst em join user_mst um
on em.mkey = um.Employee_mkey
where em.mkey = @emp_mkey
正如您在评论中所解释的,您将得到错误:
ExecuteNonQuery:连接属性尚未初始化。
这意味着您尚未初始化连接。您刚刚声明:
SqlConnection conn;
你应该这样做:
conn = new SqlConnection(@"you connection string");
//then your code
ObjPriCmd = new SqlCommand("exec [sp_c_Initiate_Clearance] " + strEmpCard.ToString(), conn);
ObjPriCmd.ExecuteNonQuery();
最佳实践:
您应该使用SqlCommand
属性CommandType
来定义从C#
调用时要调用StoredProcedure
。并使用SqlCommand .Parameters.Add
定义参数,它自己处理SqlInjection
问题。
conn = new SqlConnection(@"you connection string");
using (SqlCommand cmd = new SqlCommand("sp_c_Initiate_Clearance", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
// parameter name , parameter type parameter value
cmd.Parameters.Add("@parameter name", SqlDbType.VarChar).Value = strEmpCard.ToString();
con.Open();
cmd.ExecuteNonQuery();
}
您可以使用USing语句进行尝试:-
using (SqlCommand cmd = new SqlCommand("sp_c_Initiate_Clearance", conn)) {
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Parameter Name", Type).Value = "Value of Parameter";
conn.Open();
cmd.ExecuteNonQuery();
}