插入后记录错误,从类型'DBNull'转换为'Integer'类型无效

时间:2011-11-18 16:03:00

标签: sql

我正在尝试通过sql management studio将记录插入到表中,并在网站的Web表单中插入命令。

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”到“Integer”类型的转换无效。

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

---如果我通过网络表单创建记录,后面的代码中的vb可以捕获字段数据---

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

2 个答案:

答案 0 :(得分:0)

不确定你的问题在这里。您 在IsHoldOver中插入一个空值,并且在您尝试将该null转换为整数的网站上。

也许尝试在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)

或处理网页上的空值,因为Curt会向您展示如何在下面进行操作。

答案 1 :(得分:0)

rdr("IsHoldover")NULL,因此在使用CInt()转换为整数时,会导致异常。

您可以更改INSERT语句以插入Non-NULL bit值(10),或更改您的VB代码帐户这个可以为空的字段:

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