Sql 插入后记录错误,从类型转换为';DBNull';输入';整数';无效

Sql 插入后记录错误,从类型转换为';DBNull';输入';整数';无效,sql,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], [IsHold

我试图通过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)
---如果我通过web表单创建记录,则后面代码中的vb将显示字段数据---


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

也许可以尝试在iHoldover中添加一个值

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在下面向您展示的那样。

rdr(“iHoldover”)
NULL
,因此,当使用
CInt()
转换为整数时,这会导致异常

您可以将
INSERT
语句更改为插入
非NULL
值(
1
0
),或更改VB代码以考虑此可空字段:

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

该错误是有意义的,根据您的输入语句,IsHoldOver字段将获得NULL,因此.NET代码无法将NULL转换为整数。。。不确定问题是什么,似乎一切都在正常工作。。。
If Not IsDBNULL(rdr("IsHolderover")) Then ckIsHoldOver.Checked = (CInt(rdr("IsHoldover")) = -1)