2015-05-29 152 views
0

我一個名爲列名作爲在一個項目幾桌Attendance%和我越來越無效列名稱錯誤象下面這樣:帶特殊字符(%,#等)的列名?

說明

當前的執行過程中出現的異常網絡請求。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

代碼

SqlCommand cmd = new SqlCommand("update previous_marks set previousclass=" + t2.Text + ",Attendance%=" + t3.Text + " where sid=" + t1.Text + "", cn) 

錯誤

無效列名 '出勤'。

+0

是的,如果他們是[*分隔(引用)數據庫標識符*](https://msdn.microsoft.com /en-us/library/ms175874.aspx)。但是,最好選擇更好的列名(尤其是因爲某些接口/ API沒有正確引用)。 – user2864740

+0

幫助我們爲您提供幫助。堆棧跟蹤在哪裏?您是否也可以發佈Web請求中使用的查詢?如果您的表名爲'考勤%',使用'[]'或' 「用它在SQL」'這樣'[考勤%]'或本' 「考勤%」' – ughai

+0

的SqlCommand CMD =新的SqlCommand(「更新previous_marks set previousclass =「+ t2.Text +」,Attendance%=「+ t3.Text +」where sid =「+ t1.Text +」「,cn); –

回答

0

是的,我們可以創建一個例子,我們需要把它們與quoted Identifier []

SqlCommand cmd = new SqlCommand("update previous_marks set previousclass=" + t2.Text + ",[Attendance%]=" + t3.Text + " where sid=" + t1.Text + "", cn) 
+0

是的,你可以,但爲什麼你會嗎?這樣做只會爲進一步追蹤問題打開大門。選擇更好的名字是一個更強大的解決方案。不要像這樣連接SQL。 – LoztInSpace

+0

@LoztInSpace它只是一個簡單的更新語句。 –

+0

不知道你在評論哪一點,但我支持我的觀點。我並不反對你的回答的事實,但是當你開始與各種圖書館,報告工具,系統集成時,使用非標準列名可能會讓你陷入麻煩。 級聯SQL從來都不行。 – LoztInSpace