gpt4 book ai didi

c# - 如何从数据库返回空值

转载 作者:行者123 更新时间:2023-11-30 19:41:07 25 4
gpt4 key购买 nike

我正在尝试使用查询返回的列表来填充组合框。当我执行我的程序时,它会给我一个指定的转换无效错误(我让它在页面加载事件上执行)。除了主键外,我必须使用的数据库中的每个字段都可以为空。所以我尝试使用 DBNull.Value 但它无法让我的 (int)reader 字段工作。为了更好地理解,我在下面提供了我的代码。我怎样才能让我的 (int)reader 使用我的语句,以便他们可以在存在空值时阅读?

CustData cd = new CustData();
cd.CustomerID = (int)reader["CustomerID"];
cd.Name = reader["Name"] != DBNull.Value ? reader["Name"].ToString() : string.Empty;
cd.ShippingAddress = reader["ShippingAddress"] != DBNull.Value ? reader["ShippingAddress"].ToString() : string.Empty;
cd.ShippingCity = reader["ShippingCity"] != DBNull.Value ? reader["ShippingCity"].ToString() : string.Empty;
cd.ShippingState = reader["ShippingState"] != DBNull.Value ? reader["ShippingState"].ToString() : string.Empty;
cd.ShippingZip = (int)reader["ShippingZip"];
cd.BillingAddress = reader["BillingAddress"] != DBNull.Value ? reader["BillingAddress"].ToString() : string.Empty;
cd.BillingCity = reader["BillingCity"] != DBNull.Value ? reader["BillingCity"].ToString() : string.Empty;
cd.BillingState = reader["BillingState"] != DBNull.Value ? reader["BillingState"].ToString() : string.Empty;
cd.BillingZip = (int)reader["BillingZip"];
cd.Territory = reader["Territory"] != DBNull.Value ? reader["Territory"].ToString() : string.Empty;
cd.Category = reader["Category"] != DBNull.Value ? reader["Category"].ToString() : string.Emptyy

最佳答案

那是因为int不可为空。您需要使用 int?nullable<int> (长手)允许它是一个 int 或一个 null 值。

然后您可以使用通常的 .HasValue.Value等从项目中获取值(value)。

编辑:提高我对此答案的评论的可见性。我建议不要检查 NULL 并将零存储到您的属性中,因为这样当您保存回来时,即使系统没有更改任何内容,您也会将 Null 更改为零。现在,报告等可能会(经常)区分 NULL 和零,并可能开始做奇怪的事情!

Null 不等于零!!如果您认为它确实是一种变通方法……如果我真的想记录零会怎样?您如何区分真正的零和“原为零现在为零”的把戏?做对了,避免痛苦!

关于c# - 如何从数据库返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21046318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com