2011-11-18 43 views
1

我試圖通過sql管理工作室插入記錄到表中並插入命令詩句網站的web窗體。插入後,從類型'DBNull'轉換爲類型'整數'記錄錯誤無效

INSERT INTO [dbo].[Records] ([tp_ID], [Offense_ID], [LLO_ID], [LLLA], [SSN], [LastName], [FirstName], [MI], [Title], [Grade], [Organization], [BranchOfService], [Category], [DateCategory], [IsHoldover], [IsHoldoverDate]) 
VALUES (60033, N'E', 17, NULL, N'222-12-0222', N'SINGER', N'Te ', N'Y', NULL, N'SrA', N'703 Airbase', N'FORCE', NULL, NULL) 

雖然當我去的網站,並嘗試查看我收到以下錯誤消息記錄:

System.InvalidCastException:從轉換類型「爲DBNull」到類型「整數」是無效的。

Line 349:ckIsHoldOver.Checked = (CInt(rdr("IsHoldover")) = -1) 

--- VB中落後caputures現場數據,如果我通過web表單創建一個記錄的代碼---

.Parameters.AddWithValue("@IsHoldover", ckIsHoldOver.Checked) 
+0

SQL服務器?或其他? – gbn

+1

錯誤是有道理的,根據您的輸入語句,IsHoldOver字段變爲NULL,所以.NET代碼無法將NULL轉換爲整數...不知道問題是什麼,它看起來一切正常這應該... – Sparky

回答

0

rdr("IsHoldover")NULL,因此當使用CInt()轉換爲整數時,這會導致異常。

你可以改變你的INSERT語句插入一個Non-NULLbit值(10),或者改變您的VB代碼考慮到這一領域可爲空:

If Not IsDBNULL(rdr("IsHolderover")) Then ckIsHoldOver.Checked = (CInt(rdr("IsHoldover")) = -1) 
0

不知道你的問題在這裏。你插入一個空值到IsHoldOver,並在您試圖將該網站轉換爲一個整數的網站。

也許嘗試把一個值IsHoldOver代替

INSERT INTO [dbo].[Records] ([tp_ID], [Offense_ID], [LLO_ID], [LLLA], [SSN], [LastName], [FirstName], [MI], [Title], [Grade], [Organization], [BranchOfService], [Category], [DateCategory], [IsHoldover], [IsHoldoverDate]) 
VALUES (60033, N'E', 17, NULL, N'222-12-0222', N'SINGER', N'Te ', N'Y', NULL, N'SrA', N'703 Airbase', N'FORCE', 0, NULL) 

或處理網頁上的空值作爲簡略說明了如何在下面做。

相關問題