我一直在努力尋找解決方案,但沒有運氣。我對VB和SQL相當陌生,但這不應該太難。我已經繼承了很多代碼,並沒有太多空間來更改數據庫屬性類型或任何東西。Razor VB - 如果Request變量爲空,則傳遞一個空值
我試圖運行在刀片使用參數的UPDATE查詢,像這樣:
Dim updateCommand = "UPDATE [tblJobRating] SET [ProjectManagement] = @0, [ProjComments] = @1, [Schedule] = @2, [SchedComments] = @3 WHERE [JobRatingID] = @4"
所有問題需要INT值的列的,但我有一個例外,我需要通過它空值(傳遞另一個數字或零不會)。實質上是用戶的「N/A」值。
我分配變量從POST請求,就像這樣:
Dim projMgmt = Request.Form('projMgmt')
' ...
Dim sched = Request.Form('sched')
我有「N/A」的價值,現在發佈沒有價值(或者也可以是一個字符串,我可以檢查ISNUMBER如果需要,我想)。但是當我打電話查詢執行時,它將輸入值爲0.
db.Execute(updateCommand, projMgmt, projComments, sched, schedComments, ratingId)
它需要爲後端正常工作的NULL值。我試過類型檢查,並通過Nothing
,System.Data.SqlTypes.SqlInt32.Null
等,但它要麼給轉換錯誤或設置爲0.我怎樣才能正確地通過它?
編輯:我遺漏了db.Execute方法中的第一個參數,傳入updateCommand。爲清晰起見進行編輯。
您可以提供有關您的db.Execute方法的附加信息 - 對我來說看起來並不熟悉。它接受什麼參數? – sgeddes
db.execute命令使用佔位符將值傳遞給sql語句(@ 0 = projMgmt,@ 1 = projComments ...)並在Razor中用於防止sql注入。我忘了在第一個參數中傳遞它執行的updateCommand。我現在編輯它。 http://www.asp.net/web-pages/tutorials/introducing-aspnet-web-pages-2/form-basics –