Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DBNull错误即将出现_C#_Asp.net_Sql - Fatal编程技术网

C# DBNull错误即将出现

C# DBNull错误即将出现,c#,asp.net,sql,C#,Asp.net,Sql,我有一个数据库表 FruitCrateTable FruitCrateID, FruitCrateName, FruitGarden 现在我还创建了一个存储过程 CREATE procedure [dbo].[GetFruitCrate] ( @FruitCrateID int, @FruitCrateName varchar(222) ) AS SELECT * FROM FruitCrateTable WHERE FruitCrateID =

我有一个数据库表

FruitCrateTable FruitCrateID, FruitCrateName, FruitGarden
现在我还创建了一个存储过程

CREATE procedure [dbo].[GetFruitCrate]
(
    @FruitCrateID int,
    @FruitCrateName varchar(222)
)
AS

SELECT 
    *
FROM 
    FruitCrateTable
WHERE
    FruitCrateID = @FruitCrateID
and
    FruitCrateName = @FruitCrateName 
现在,当我尝试检查果园是否为空或未使用DataAccess时

我将行的实例创建为

 public myDataAccess.DataAccess.GetFruitCrateRow fruitCrateRow;
 //then

 if (!string.IsNullOrEmpty(fruitCrateRow.FruitGarden))
            {
//do something but i am getting error, how can i fix this issue ?
else { // do something else }
错误

The value for column &#39;FruitGarden&#39; in table &#39;GetFruitCrate&#39; is DBNull.</message><full>System.Data.StrongTypingException: The value for column &#39;FruitGarden&#39; in table &#39;GetFruitCrate&#39; is DBNull. ---&gt; System.InvalidCastException: Unable to cast object of type &#39;System.DBNull&#39; to type &#39;System.String&#39;.
列'的值;果园';在表39中;GetFrootCrate';是DBNull.System.Data.StrongTypingException:列'的值;果园';在表39中;GetFrootCrate';是DBNull。--System.InvalidCastException:无法强制转换类型为'的对象;System.DBNull';输入';System.String';。
我让果园尽可能空

更新


当我尝试果园时。果园!=DBNull.Value我得到了错误运算符“!=”无法应用于“string”和“System.DBNull”类型的操作数。正如异常所述,
fuitcartow.FruitGarden
DBNull
,不能强制转换为字符串(在调用
string.IsNullOrEmpty
时发生)

所以。。。测试
DbNull

if (!DBNull.Value.Equals(fruitCrateRow.FruitGarden) && 
   !string.IsNullOrEmpty(fruitCraterow.FruitGarden))
要检查DbNull,请参阅

评估数据库字段以确定其值是否正确 DBNull,可以将字段值传递给DBNull.value.Equals 方法。然而,这种方法很少使用,因为有一个数字 评估数据库字段是否缺少数据的其他方法。这些 包括Visual Basic IsDBNull函数、Convert.IsDBNull 方法,DataTableReader.IsDBNull方法,IDataRecord.IsDBNull方法 方法,以及其他几种方法

所以

也可以

编辑

您仍然可以在DBNull测试之后添加
字符串.IsNullOrEmpty
测试,因为只有当左半部分为true时才会对其进行计算。

null
不同。试一试

if (!DBNull.Value.Equals(fruitCrateRow.FruitGarden) && 
     fruitCrateRow.FruitGarden != "")

而不是
string.isNullOrEmpty
您需要检查:

if (fruitCrateRow.FruitGarden != DbNull.Value)
            {
//do something but i am getting error, how can i fix this issue ?
因为它是一个空数据库

见:

以及:

您存储的进程是
[dbo].[GetFroothCrate]
,但您正在调用
GetFroothCratow
?@PatLillis我在尝试FroothCratow.FroothGarden时重命名了我的场景!=DBNull.Value我得到了错误运算符“!=”无法应用于“字符串”和“系统”类型的操作数。DBNull@user13814你是对的,经过修改和编辑(但克劳迪奥·雷迪已经纠正了)
if (fruitCrateRow.FruitGarden != DbNull.Value)
            {
//do something but i am getting error, how can i fix this issue ?