gpt4 book ai didi

c# - 如何管理将 DateTime 的空对象解析为 DBNULL 与 ADO.NET 一起使用

转载 作者:可可西里 更新时间:2023-11-01 09:02:11 26 4
gpt4 key购买 nike

我有两个 DateTime 对象,BirthDate 和 HireDate。它们被正确地格式化为字符串,当我将它们传递到我的数据访问层时,它们需要被解析为 DateTime 对象。

DateTime hD = DateTime.Parse(hire);            
DateTime bD = DateTime.Parse(birth);

//incase of a datestring being passed through
dateStringPassed = "7/2/1969";

但有时,字符串 hirebirth 为 null 或为空 "",如果代码像这样运行,我会得到一个解析空字符串时出现 FormatException 错误。如何管理空解析并允许 DateTime(如果为空或 null)被接受为 DBNull.Value

如果用户不传递 DateTime 字符串,我仍然无法管理,然后解析会崩溃我的代码。

我的出生日期参数如下,检查变量是否为空,然后使用 DBNull.Value。

最佳答案

Parse 方法无法处理空字符串,但您可以使用可为空的 DateTime 并执行如下操作:

DateTime? hD = String.IsNullOrEmpty(hire) ? (DateTime?)null : DateTime.Parse(hire)

但更安全的做法是使用 TryParse 代替:

DateTime? hD = null;
DateTime.TryParse(hire, out hD);

然后为了存储这个值,你可以测试hD.HasValue:

if(hD.HasValue) { /* use hD */ }
else { /* else use DBNull.Value */ }

从 C# 7 开始,您可以对内联输出参数使用更短的语法,并且可以完全避免可空类型:

if (DateTime.TryParse(hire, out var hD)) { /* use hD */ }
else { /* use DBNull.Value */ }

关于c# - 如何管理将 DateTime 的空对象解析为 DBNULL 与 ADO.NET 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13555505/

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