gpt4 book ai didi

asp.net - 将空值插入日期字段?

转载 作者:行者123 更新时间:2023-12-02 20:32:48 27 4
gpt4 key购买 nike

我有一个 FormView,可以从一个表 (MS Access) 中提取数据,然后将其(加上更多数据)插入到另一个表中。我的日期有问题。

第一个表有两个日期字段:date_subscribeddate_updated。在某些记录中,date_updated 为空。这导致我在尝试插入第二个表时出现数据不匹配错误。

这可能是因为我将第一个表中的 date_updated 字段数据绑定(bind)到 FormView 上的 HiddenField 中。然后,它从 HiddenField 获取值并尝试将其插入到第二个表中:

Dim hfDateRequestUpdated As HiddenField = FormView1.FindControl("hfDateRequestUpdated")
myDateRequestUpdated = hfDateRequestUpdated.Value
'... It then attempts to insert myDateRequestUpdated into the database.

当那里有值时它会起作用,但显然您无法在 Access 中的日期/时间字段中插入任​​何内容。我想我可以创建第二个插入语句,该语句不会插入到 date_updated 中(当 date_updated 中没有值时使用),但这是唯一的方法?似乎应该有一种更简单/更少冗余的方法。

编辑:

好的。所以我尝试插入 SqlDateTime.Null、Nothing 和 DBNull.Value。 SqlDateTime.Null 导致值 1/1/1900 被插入到数据库中。 “Nothing”会导致插入 1/1/2001。如果我尝试使用 DBNull.Value,它会告诉我它无法转换为字符串,所以也许我在那里没有做一些正确的事情。无论如何,我希望如果没有什么可插入的,Access 中的字段将保持空白,但似乎必须用一些东西来填充它......

编辑:

我让 DBNull.Value 正常工作,它确实插入了一个完全空白的值。这是我最终的工作代码:

Dim hfDateRequestUpdated As HiddenField = FormView1.FindControl("hfDateRequestUpdated")
Dim myDateRequestUpdated = Nothing

If hfDateRequestUpdated.Value = Nothing Then
myDateRequestUpdated = DBNull.Value
Else
myDateRequestUpdated = DateTime.Parse(hfDateRequestUpdated.Value)
End If

谢谢大家!

最佳答案

Sara,您在更新之前尝试过转换日期/时间吗?数据不匹配错误可能是由于您尝试插入数据库的 hfDateRequestUpdated.Value 与列类型不匹配所致。

尝试单步执行代码并查看该值的类型。如果您发现它是一个字符串(看起来可能是,因为它来自表单上的字段),那么您需要首先检查该字段是否为空字符串(VBNullString)。如果是这样,您需要将插入数据库的值更改为 DBNull,您可以在 VB.Net 中使用 DBNull.Value 获取该值。

我们看不到您的代码,因此我们不确切知道如何将值存入数据库,但它看起来像这样

If theDateValueBeingInserted is Nothing Then
theDateValueBeingInserted = DBNull.Value
EndIf

请记住,上述测试仅在从 HiddenField 获取的值是字符串时才有效,我相信这是根据 documentation 的。 。这可能就是你所遇到的所有麻烦的根源。您将日期/时间值隐式转换为字符串(这很容易),但将它们隐式转换回来并不那么容易,特别是如果初始值为 DBNull

<小时/>

一边

我认为 Marshall 试图建议的内容与上面的代码等效,但是在一个名为“三元运算符”的快捷表达式中,在 VB.Net 中如下所示:

newValue = IF(oldValue is Nothing ? DBNull.Value : oldValue)

不过我不推荐它,因为它会让新程序员感到困惑,而且语法在 2008 年从 IFF(condition ? trueResult : falseResult)

关于asp.net - 将空值插入日期字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240380/

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