简体   繁体   English

列名无效SQL Server

[英]Invalid Column Name SQL Server

Whenever I submit my form, it gives me an error code: 每当我提交表单时,它都会给我一个错误代码:

"invalid column name" for all of the eventspecialist, phone, phon2, etc. and @SPECIALIST, @CUST_PHONE, @CUST_PHONE2, etc. 所有活动专家,电话,电话2等的“无效列名”和@SPECIALIST,@ CUST_PHONE,@ CUST_PHONE2等。

Here is my code below, perhaps I'm not writing the SQL statement or parameters correctly? 这是我下面的代码,也许我没有正确编写SQL语句或参数? The ones with @ infront are what's in my database, and the other lowercase ones are my textboxes. 使用@ infront的是我的数据库中的内容,其他小写的是我的文本框。 I'm relatively new to this type of coding. 我对这种编码比较陌生。

Edit: Changed my INSERT INTO statement to what was suggested. 编辑:将我的INSERT INTO语句更改为建议的内容。 The error still persists, but is only minimized to 错误仍然存​​在,但只是最小化

"Invalid column name eventspecialist, Invalid column name phone, Invalid column name phone2, etc." “无效的列名称eventspecialist,无效的列名称电话,无效的列名称phone2等”

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;
    }
}

第一列名称然后是变量

string sql = "INSERT INTO tblcontacts (Col1,Col2,...) VALUES (@Var1,@Var2,...)"

I suppose that your columns are 我想你的专栏是

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

if so you should change your INSERT INTO in this way 如果是这样,你应该以这种方式改变你的INSERT INTO

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
(@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)

In your execution method you are creating parameters, but, then, in the insert statement execution方法中,您正在创建参数,但是,然后在insert语句中
first put the real column names and then, in the value part, the parameters names 首先输入实际的列名,然后在值部分中输入参数名称
(with @prefix) (使用@prefix)

As a side note, next time, try to format better your code. 作为旁注,下次尝试更好地格式化代码。

你的列和值是错误的方式:

string sql = "INSERT INTO tblcontacts (eventspecialist, phone, phone2, firstname, lastname, besttime, companyname, nonprofit, requesteddate, requestedtime, attendance, eventtype, other, leadsource, notes, catering, bar, damagedeposit, dancefloor) VALUES (@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)";

You have the order backwards: generalised, it is: 你有倒退的订单:概括,它是:

insert into tableName (column1, ..., column20) values (value1, ..., value20)

so; 所以; just swap the columns and values: 只需交换列和值:

string sql = "INSERT INTO tblcontacts (eventspecialist, phone, phone2, firstname, lastname, besttime, companyname, nonprofit, requesteddate, requestedtime, attendance, eventtype, other, leadsource, notes, catering, bar, damagedeposit, dancefloor) VALUES (@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)";
string sql2 = "INSERT INTO tblnotes (griddate, gridnotes, comments) VALUES (@NOTEDATE, @NOTEBY, @COMMENTS)";

You got your INSERT statements all wrong..... 你的INSERT语句都错了.....

Instead of this: 而不是这个:

INSERT INTO tblcontacts (@SPECIALIST, @CUST_PHONE1, .....)
VALUES (eventspecialist, phone, .....);

You need to use the opposite: 你需要使用相反的方法:

INSERT INTO tblcontacts (eventspecialist, phone, .....)
VALUES (@SPECIALIST, @CUST_PHONE1, .....);

You need to have the table's column names in the list after the table name, and the parameter's (with a leading @ ) after the VALUES 您需要在表名后的列表中包含表的列名,并在VALUES后使用参数' (带有前导@

You have entered your paramters as columns and your columns as parameters. 您已将列和列作为参数输入参数。 Try the other way around. 尝试相反的方式。

Replace your code with the following 用以下代码替换您的代码

"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)";

and here 和这里

    cmd.Parameters.Add("@eventspecialist", SqlDbType.NVarChar, 50).Value = eventspecialist;
    cmd.Parameters.Add("@phone", SqlDbType.NVarChar, 50).Value = phone;
    cmd.Parameters.Add("@phone2", SqlDbType.NVarChar, 50).Value = phone2;
    cmd.Parameters.Add("@firstname", SqlDbType.NVarChar, 50).Value = firstname;
    cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 50).Value = lastname;
    cmd.Parameters.Add("@besttime", SqlDbType.NVarChar, 50).Value = besttime;
    cmd.Parameters.Add("@companyname", SqlDbType.NVarChar, 225).Value = companyname;
    cmd.Parameters.Add("@nonprofit", SqlDbType.NVarChar, 10).Value = nonprofit;
    cmd.Parameters.Add("@requesteddate", SqlDbType.Date, 20).Value = requesteddate;
    cmd.Parameters.Add("@requestedtime", SqlDbType.Time, 20).Value = requestedtime;
    cmd.Parameters.Add("@attendance", SqlDbType.Int, 50).Value = attendance;
    cmd.Parameters.Add("@eventtype", SqlDbType.NVarChar, 50).Value = eventtype;
    cmd.Parameters.Add("@other", SqlDbType.NVarChar, 225).Value = other;
    cmd.Parameters.Add("@leadsource", 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("@damagedeposit", SqlDbType.NVarChar, 19).Value = damagedeposit;
    cmd.Parameters.Add("@dancefloor", SqlDbType.Money).Value = Decimal.Parse(dancefloor);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM