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 'FruitGarden' in table 'GetFruitCrate' is DBNull.</message><full>System.Data.StrongTypingException: The value for column 'FruitGarden' in table 'GetFruitCrate' is DBNull. ---> System.InvalidCastException: Unable to cast object of type 'System.DBNull' to type 'System.String'.
列'的值;果园';在表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 ?