Ungültiger Spaltenname SQL-Server
Immer, wenn ich meine form, es gibt mir eine Fehler-code:
"Ungültiger Spaltenname" für alle eventspecialist, Telefon, phon2, etc. und @FACHARZT, @CUST_PHONE, @CUST_PHONE2, etc.
Hier ist mein code vielleicht bin ich nicht das schreiben der SQL-Anweisung oder ein Parameter richtig? Diejenigen, die mit @ infront sind, was in meine Datenbank, und die anderen Kleinbuchstaben sind meine Textfelder. Ich bin relativ neu bei dieser Art der Codierung.
Edit: Änderte meine INSERT INTO-Anweisung zu dem, was vorgeschlagen wurde. Der Fehler weiterhin besteht, aber nur minimiert
"Ungültige Spalte name eventspecialist, Ungültige Spalte name Telefon, Ungültige Spalte name phone2, etc."
private void execution(string eventspecialist, string phone, string phone2, string firstname, string lastname, string besttime, string companyname, string nonprofit, string requesteddate, string requestedtime, string attendance, string eventtype, string other, string leadsource, string notes, string catering, string bar, string damagedeposit, string dancefloor, string griddate, string gridnotes, string comments)
{
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "INSERT INTO tblcontacts (@SPECIALIST, @CUST_PHONE1, @CUST_PHONE2, @CUST_FNAME, @CUST_LNAME, @BEST_TIME, @COMPANY_NAME, @NONPROFIT, @REQ_DATE, @REQ_TIME, @ATTENDANCE, @EVENT_TYPE, @OTHER_DESC, @LEAD_SOURCE, @NOTES, @CATERING, @BAR, @DAMAGE_DEPOSIT, @DANCE_FLOOR) VALUES (eventspecialist, phone, phone2, firstname, lastname, besttime, companyname, nonprofit, requesteddate, requestedtime, attendance, eventtype, other, leadsource, notes, catering, bar, damagedeposit, dancefloor)";
string sql2 = "INSERT INTO tblnotes (@NOTEDATE, @NOTEBY, @COMMENTS) VALUES (griddate, gridnotes, comments)";
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@SPECIALIST", SqlDbType.NVarChar, 50).Value = eventspecialist;
cmd.Parameters.Add("@CUST_PHONE1", SqlDbType.NVarChar, 50).Value = phone;
cmd.Parameters.Add("@CUST_PHONE2", SqlDbType.NVarChar, 50).Value = phone2;
cmd.Parameters.Add("@CUST_FNAME", SqlDbType.NVarChar, 50).Value = firstname;
cmd.Parameters.Add("@CUST_LNAME", SqlDbType.NVarChar, 50).Value = lastname;
cmd.Parameters.Add("@BEST_TIME", SqlDbType.NVarChar, 50).Value = besttime;
cmd.Parameters.Add("@COMPANY_NAME", SqlDbType.NVarChar, 225).Value = companyname;
cmd.Parameters.Add("@NONPROFIT", SqlDbType.NVarChar, 10).Value = nonprofit;
cmd.Parameters.Add("@REQ_DATE", SqlDbType.Date, 20).Value = requesteddate;
cmd.Parameters.Add("@REQ_TIME", SqlDbType.Time, 20).Value = requestedtime;
cmd.Parameters.Add("@ATTENDANCE", SqlDbType.Int, 50).Value = attendance;
cmd.Parameters.Add("@EVENT_TYPE", SqlDbType.NVarChar, 50).Value = eventtype;
cmd.Parameters.Add("@OTHER_DESC", SqlDbType.NVarChar, 225).Value = other;
cmd.Parameters.Add("@LEAD_SOURCE", SqlDbType.NVarChar, 50).Value = leadsource;
cmd.Parameters.Add("@NOTES", SqlDbType.NVarChar, 225).Value = notes;
cmd.Parameters.Add("@CATERING", SqlDbType.NVarChar, 1).Value = catering;
cmd.Parameters.Add("@BAR", SqlDbType.NVarChar, 1).Value = bar;
cmd.Parameters.Add("@DAMAGE_DEPOSIT", SqlDbType.NVarChar, 19).Value = damagedeposit;
cmd.Parameters.Add("@DANCE_FLOOR", SqlDbType.Money).Value = Decimal.Parse(dancefloor);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex_msg)
{
string msg = "Error occured while inserting";
msg += ex_msg.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql2, conn);
cmd.Parameters.Add("@NOTEDATE", SqlDbType.Date, 50).Value = griddate;
cmd.Parameters.Add("@NOTEBY", SqlDbType.NVarChar, 50).Value = gridnotes;
cmd.Parameters.Add("@COMMENTS", SqlDbType.NVarChar, 50).Value = comments;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex_msg)
{
string msg = "Error occured while inserting";
msg += ex_msg.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}
protected void Page_Load(object sender, EventArgs e)
{
griddate.Text = DateTime.Now.ToString("yyyy/MM/dd");
}
protected void submit_Click(object sender, EventArgs e)
{
if (requesteddate.Text == "")
{
Finish.Text = "Please complete the form!";
}
else if (requestedtime.Text == "")
{
Finish.Text = "Please complete the form!";
}
else if (attendance.Text == "")
{
Finish.Text = "Please complete the form!";
}
else
{
execution(eventspecialist.Text, phone.Text, phone2.Text, firstname.Text, lastname.Text, besttime.SelectedItem.Text, companyname.Text, nonprofit.Text, requesteddate.Text, requestedtime.Text, attendance.Text, eventtype.SelectedItem.Text, other.Text, leadsource.SelectedItem.Text, notes.Text, catering.Text, bar.Text, damagedeposit.Text, dancefloor.SelectedItem.Text, griddate.Text, gridnotes.SelectedItem.Text, comments.Text);
Finish.Visible = false;
conform.Visible = true;
}
}
- Sie haben invertiert die Spalten-Namen mit der Liste der parameter
- Selbst danach kann ich immer noch den Fehler "Ungültiger Spaltenname eventspecialist, Ungültige Spalte name Telefon, Ungültige Spalte name phone2, etc.". Irgendwelche Ideen?
- Was sind die tatsächlichen Namen der Spalten in der Datenbank?
- Was ist oben geschrieben, nur ohne das @.
- Wie ich erwartet hatte, so schauen Sie auf meine Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, dass Ihre Spalten sind
wenn ja, sollten Sie ändern Ihre STECKEN in dieser Weise
In Ihrem
execution
Methode erstellen Sie Parameter, aber dann in der insert-Anweisunglegen Sie zuerst die echten Spaltennamen und klicken Sie dann im value-Teil die Parameter-Namen
(mit @ - Präfix)
Als seitliche Anmerkung, das nächste mal versuchen Sie zu formatieren, besser Ihre code.
Ersten Spalte Namen und dann die Variablen
Ihre Spalten und Werte sind der falsche Weg-Runde:
Haben Sie die Reihenfolge rückwärts: verallgemeinern, es ist:
so; nur vertauschen der Spalten und Werte:
Erhielt Sie Ihre INSERT-Anweisungen alle falsch.....
Stattdessen:
Müssen Sie das Gegenteil:
Müssen Sie die Tabelle die Spaltennamen in der Liste nach den Namen der Tabelle, und die Parameters (mit einem führenden
@
) nach derVALUES
Ihnen eingegebene Parameter als Spalten und Spalten als Parameter. Versuchen Sie die andere Weise herum.
Ersetzen Sie den code mit den folgenden
und hier