我們正在將數據庫後端從Access遷移到SQL Server。當在SqlParameter中使用保留字時「必須聲明標量變量」錯誤
其中一個字段名稱是Key
。現在Key
是a reserved word in both Access and SQL Server因此Access中的解決方法總是在字段名稱周圍放上方括號。
連接到Access時,我們爲每個OleDBCommand
生成了一個OleDBParameter
集合。在運行時檢查命令CommandText
它會讀取類似UPDATE Foo SET [Key]=? WHERE etc
的內容,因爲記住OleDB/Access沒有命名參數,只有?
。這很好。
快進到今天,並使用SQL Server我們做了類似的事情與SqlCommand
和SQLParameter
。因此,在運行時CommandText
讀取類似UPDATE Foo SET [Key][email protected] WHERE etc
的東西,因爲SQL不喜歡舊問號的事情,我們必須開始使用命名參數。
麻煩的是應用扼流圈這個命令,他說:
Incorrect syntax near 'varchar'. Must declare the scalar variable "@Key"
這是唯一與受影響的字段名Key
表。一切已存活遷移到SQL和其他表(與字段名沒有保留字)的罰款。
我理解的解決方案之一是避免使用保留字作爲一個字段的名字,但我希望的答案,讓我們來解決保留字,因爲我們總是習慣。
您可以發佈您用於命令及其參數綁定的代碼塊嗎?很高興看到你的代碼,以便我們能夠判斷'@ Key'是否是一個未聲明的變量/參數,或者沒有任何東西被綁定到該值佔位符。 – Nonym