Ich habe empfohlen, meinen Code durch SqlParameter
zu ersetzen, um SQL-Injektion als Sicherheitsproblem zu vermeiden, aber mit meinem begrenzten Verständnis. Ich versuchte es der Umsetzung, aber ich bin mit einem Fehler konfrontiert:Fehler mit addwithvalue SQL-Parameter
Must Declare Scalar Variable
Ich habe die anderen Vorschläge anderer Threads versucht, über einen neuen Parameter für jede Einfügung Umsetzung statt den Wert des Parameters für jeden Eintrag zu ersetzen.
String query = "INSERT INTO EmpInfo(EmpYear, EmpStatus, LName, FName, JobTitle, EmpPay, EmpDoB, EmpSex, EmpAddr, EmpCity, EmpState, EmpZIP, EmpCountry, EmpEAddr, EmpTelNo, EmpMobileNo, EmpDate) " +
"VALUES('"+EmpYear+"', @EmpStatus, @LName, @FName, @JobTitle, @EmpPay, @EmpDoB, @EmpSex, @EmpAddr, @EmpCity, @EmpState, @EmpZIP, @EmpCountry, @EmpEAddr, @EmpTelNo, @EmpMobileNo, getdate())";
String query2 = "INSERT INTO AccountInfo(LName, FName, EmpTemplate, AccountType, EmpStatus, EmpDate) " +
"VALUES (@LName, @FName, @EmpTemplate, @AccountType, @EmpStatus, GetDate())";
using (SqlConnection connection = new SqlConnection("Data Source=RB-DESKTOP;Initial Catalog=TimeDB;Persist Security Info=True;User ID=sa;Password=bautista7"))
{
SqlCommand cmd = new SqlCommand(query, connection);
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "SELECT MAX(EmpID) FROM EmpInfo";
SqlDataReader rdr = cmd.ExecuteReader();
rdr.Close();
SqlCommand command = new SqlCommand(query, cmd.Connection);
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpYear", Value = EmpYear });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpStatus", Value = "Active" });
command.Parameters.Add(new SqlParameter() { ParameterName = "@LName", Value = regLname_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@FName", Value = regFname_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@JobTitle", Value = "NULL" });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpPay", Value = PayType_cb.SelectedItem.ToString() });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpDoB", Value = regDob_dtp.Value.Date });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpSex", Value = gender });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpAddr", Value = regAddr_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpCity", Value = regCity_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpState", Value = regState_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpZIP", Value = regZip_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpCountry", Value = regCountry_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpEAddr", Value = regEmail_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpTelNo", Value = regTel_text.Text });
command.Parameters.Add(new SqlParameter() { ParameterName = "@EmpMobileNo", Value = regMob_text.Text });
command.ExecuteNonQuery();
command.Parameters.Clear();
SqlCommand command2 = new SqlCommand(query2, cmd.Connection);
command.Parameters.AddWithValue("@LName", regLname_text.Text);
command.Parameters.AddWithValue("@FName", regFname_text.Text);
command.Parameters.AddWithValue("@EmpTemplate", template);
command.Parameters.AddWithValue("@AccountType", AcctType_cb.SelectedItem.ToString());
command.Parameters.AddWithValue("@EmpStatus", "Active");
command.ExecuteNonQuery();
command.Parameters.Clear();
Was ist der Fehler? Bitte lesen Sie [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t Und hier ist ein großartiger Ort, um [** START **] (http : //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) um zu erfahren, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. –
Es tut mir wirklich leid, aber es ist auf dem Absatz geschrieben. Ich bin mit der Ausnahme von "Must Scala Variable deklarieren" behandelt Nicht nur mit einer Spalte, aber wenn nicht alle von ihnen, die meisten. – user3442765
Aber welche Zeile verursachen Sie diesen Fehler, und was ist der genaue Fehler? Versuchen Sie auch zuerst mit einer einfachen Tabelle mit weniger Feldern zu testen, damit Sie sich leichter auf den Fehler konzentrieren können. [** So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel **] (http://stackoverflow.com/help/ mcve) –