2012-03-09 123 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);