台灣最大程式設計社群網站
線上人數
887
 
會員總數:245130
討論主題:189035
歡迎您免費加入會員
討論區列表 >> C# >> sql語法update的欄位名稱用變數取代
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
sql語法update的欄位名稱用變數取代
價值 : 70 QP  點閱數:251 回應數:5

樓主

bluetooth
門外漢
0 3
168 13
發送站內信

SqlCommand Cmd = new SqlCommand("update Position1 set xxx = '" + position + "'", Con1);
因為要存入的欄位名稱有可能是欄位1、欄位2、欄位3........
所以請問如果我想把xxx改成變數應該要怎麼改??
麻煩解答感謝




搜尋相關Tags的文章: [ C# ] , [ sql ] , [ update ] , [ 變數 ] ,
本篇文章發表於2019-09-04 01:30
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

P陳
檢舉此回應
只要將欄名轉成變數即可

F1Name="UID"
sqlstr="Update UID='" + Uid.text + "' where ..."
變成
sqlstr="Update " + F1Name + "='" + Uid.text + "' where ..."
注意欄位變數名前後沒有加 單引號 '

另建議將 Update 指令 另外處理
new SqlCommand("update Position1 set xxx = '" + position + "'", Con1);
-->new SqlCommand(sqlstr, Con1);

本篇文章回覆於2019-09-04 06:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

bluetooth
檢舉此回應
解決了感謝
再請問你兩個問題
1.我原本把變數加了單引號,執行後就出現語法錯誤,所以變數放在等號的左邊不加單引號右邊要加,是這樣嗎,還是有其他的原因?
2.您的建議將update指令另外處理,如果沒有另外處理的話,會有問題嗎?兩個有什麼差別??
本篇文章回覆於2019-09-04 18:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

誰是誰
檢舉此回應
不要再用有 sql injection 的寫法了,如果這是個正式的專案,恐怕連資料庫都會被清光


何謂 SQL Injection

如果可能的話,改用 EntityFramework,會愉快很多。
本篇文章回覆於2019-09-04 22:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
F1Name="Uid":Uid.Text="abcde"

sqlstr="Update " + F1Name + "='" + Uid.text + "' where ..."
電腦解讀後 是 "Update Uid ='abcde' where ..."

sqlstr="Update '" + F1Name + "'='" + Uid.text + "' where ..."
電腦解讀後 是 "Update 'Uid' ='abcde' where ..." <----錯誤的
--------------------------------------------------

誰是誰寫提醒的 sql injection ,是另門重點,請自行上網查詢
本篇文章回覆於2019-09-05 05:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

bluetooth
檢舉此回應
感謝各位的解答,問題解決了,也學到了不少
本篇文章回覆於2019-09-05 18:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.