Ich führe in meinem Projekt einen Code für scheduler aus. Aber es funktioniert nicht wie erwartet.

private void Initiate_User(string strEmpCard)
   {
       //conn.Open();
       ObjPriCmd = new SqlCommand("exec [sp_c_Initiate_Clearance] " + strEmpCard.ToString() + "", conn);
       ObjPriCmd.ExecuteNonQuery();
   }

Der Debugger stoppt und öffnet ein Formular, nachdem meine ExecuteNonQuery() Zeile debuggt wurde. Ich kann den Fehler auch nicht verfolgen. was ist hier falsch ??

UPDATE

Meine Fehlerabfrage

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
-1
hud 2 Jän. 2016 im 12:48

2 Antworten

Beste Antwort

Wie Sie in den Kommentaren erklärt haben, wird folgende Fehlermeldung angezeigt:

ExecuteNonQuery: Die Verbindungseigenschaft wurde nicht initialisiert.

Dies bedeutet, dass Sie die Verbindung nicht initialisiert haben. Sie haben es gerade erklärt:

SqlConnection conn;

Sie sollten tun:

conn = new SqlConnection(@"you connection string");
//then your code
ObjPriCmd = new SqlCommand("exec [sp_c_Initiate_Clearance] " + strEmpCard.ToString(), conn);
ObjPriCmd.ExecuteNonQuery();

Die beste Vorgehensweise:

Sie sollten eine SqlCommand -Eigenschaft CommandType verwenden, um zu definieren, dass Sie beim Aufrufen von C# ein StoredProcedure aufrufen. Und definieren Sie Parameter mit SqlCommand .Parameters.Add, das die SqlInjection Probleme selbst behandelt.

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();
}
4
Shaharyar 2 Jän. 2016 im 10:17

Sie können es mit USing Statement versuchen: -

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();
}
0
yash 2 Jän. 2016 im 10:07