2012-03-09 89 views
2

每当我提出我的形式,它给了我一个错误代码:无效列名称的SQL Server

“无效列名”的所有eventspecialist,电话,phon2等,@SPECIALIST,@CUST_PHONE的,@ CUST_PHONE2等

这是我的代码如下,也许我没有正确写入SQL语句或参数? @ infront的是我的数据库中的内容,其他小写字母是我的文本框。对于这种类型的编码我相对较新。

编辑:改变了我的INSERT INTO语句建议什么。错误仍然存​​在,但最小化为

“无效的列名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; 
    } 
} 
+1

,你甚至这样做后的参数列表 – Steve 2012-03-09 14:03:04

+0

反转的列名,我仍然得到错误“无效列名称替换代码eventspecialist,列名称电话无效,列名phone2无效等“。有任何想法吗? – Control 2012-03-09 14:10:00

+1

数据库中的列的真实名称是什么? – Steve 2012-03-09 14:15:03

回答

6

我想,你的列

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 

如果是的话,你应该改变你的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) 

在你execution方法所创建的参数,但是,随后,在INSERT语句
首先把真实的列名,然后,在值部中,参数名称
(与@prefix)

作为边n ote,下次尝试更好地格式化您的代码。

+0

啊,非常感谢!有用。 – Control 2012-03-09 14:24:07

+0

你是什么意思尝试更好地格式化你的代码?我知道这可能会导致很多低效率,但只是简单地工作就是我想先完成的一步。我再一次欣赏这个解释。 :) – Control 2012-03-09 14:28:17

+0

啊,你打我,当我试图让插入代码工作....... – 2012-03-09 14:30:18

9

首先列名,然后变量

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

即使这样做后,我仍然收到错误“无效的列名eventspecialist,无效的列名电话,无效的列名phone2,等等。”。有任何想法吗? – Control 2012-03-09 14:07:03

3

你列的和值是南辕北辙:

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

你有向后的顺序为:广义的,它是:

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

等等;只需交换列和值:

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

您输入了参数作为列和列作为参数。尝试另一种方式。

3

你的INSERT语句全错了.....

取而代之的是:

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

您需要使用相反:

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

你需要有表的列名在表名后的名单参数的(带领)后VALUES

0

具有以下

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

这里

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