2011-11-18 92 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) 

或处理网页上的空值作为简略说明了如何在下面做。

相关问题