我在项目中为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
答案 0 :(得分:4)
正如您在评论中所解释的那样,您收到了错误:
ExecuteNonQuery:尚未初始化Connection属性。
这表示您尚未初始化连接。你刚宣布它:
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
来定义从StoredProcedure
致电时您正在呼叫C#
。并使用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();
}
答案 1 :(得分:0)
您可以使用声明来尝试: -
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();
}