在SQL Server中从ASP.NET将null传递给整数

在SQL Server中从ASP.NET将null传递给整数,asp.net,sql-server,datatable,Asp.net,Sql Server,Datatable,我也试过了 DataTable dt = new DataTable(); dt=//Calling SP which will return a datatable dt.Rows[i]["requestid"] = System.DBNull.Value; // Problem here 但是没有成功。我得到一个错误: 对象不能从DBNull强制转换为其他类型 请帮我解决这个问题。我实际上实现了我自己的模拟,并且有一个C#代码,它调用一个运行SP的函数,并返回一个包含整数列的数据表

我也试过了

 DataTable dt = new DataTable();
 dt=//Calling SP which will return a datatable
 dt.Rows[i]["requestid"] = System.DBNull.Value;  // Problem here
但是没有成功。我得到一个错误:

对象不能从DBNull强制转换为其他类型


请帮我解决这个问题。

我实际上实现了我自己的模拟,并且有一个C#代码,它调用一个运行SP的函数,并返回一个包含整数列的数据表。我可以将单元格设置为
DBNull.Value
,没有任何问题


这让我怀疑您是否真的在处理您认为是的DataTable列类型。我希望我能复制这个,这样我就能进一步实验了。如果我是你,接下来我会尝试使用调试器查看DataTable
dt
并查看列的类型

这不是真正的SQL Server,从外观上看,它是一个ADO.NET数据表。为什么要为该字段分配Null?实际上,我正在将该列导出到Excel工作表中,该时间requestId是重复的。如果requestId是重复的,我希望传递Null,以便Excel单元格将为空,而不是重复的值。您能将
requestId
设置为可为空的int,如
int?
,只需将普通的
null
传递给数据表,而不是特殊的
DBNull.value
类型?编辑:根据设计,
int
不能为空。因此,如果在传递到excel时希望字段为null,则需要将其设置为可为null的int,或者将其显示为
string
并传递
null
,这样您还可以显示“dt”是如何创建的吗?因为基本上你应该能够将DbNull存储在整数列中:@YuriyGalanter我已经更新了我的问题,请看一看。在DB requestID中是Integer.DbNull.value工作正常。但是现在它抛出了一个错误。不知道我哪里错了。
System.Data.SqlTypes.SqlInt32.Null