ExecuteScalar返回NULL值

时间:2015-06-10 18:26:25

标签: c# sql sql-server

存储过程:

dbo.GetLDate
select DateEntered from Table1 where Id = 4, Gid=5

结果:

Executed Successfully

要验证的新查询:

DECLARE @LDate datetime
EXEC @LDate =  GetLDate 4,5

结果:

DateEntered
2014-02-13 06:21:43.600

因此,工作正常

创建了最终存储过程:

EXEC @LDate =  GetLDate 4,5
Select 1

在C#中

int? id = _database.ExecuteScalar() as int?;

这里,每次我只获得空值。但我选择1仍然我得到空值。可能是什么原因。

1 个答案:

答案 0 :(得分:5)

您正在选择字符串'1',并且无法使用int?将其转换为cast。因此你变得空了。

使用:

SELECT 1 --without single quotes

或者您可以使用Convert.ToInt32之类的:

int? id = Convert.ToInt32(_database.ExecuteScalar());

考虑以下示例:

object obj = "1";
int? id = obj as int?;

null(字符串)转换为"1"后,您将返回int/int?将失败。