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
2 Antworten
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();
}
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();
}
Neue Fragen
c#
C # (ausgesprochen "siehe scharf") ist eine statische Typisierungsprogrammiersprache mit mehreren Paradigmen, die von Microsoft entwickelt wurde. C # -Code zielt normalerweise auf die .NET-Tools und -Laufzeiten von Microsoft ab, zu denen unter anderem .NET Framework, .NET Core und Xamarin gehören. Verwenden Sie dieses Tag für Fragen zu Code, der in der formalen Spezifikation von C # oder C # geschrieben ist.