13

我不确定为什么 VB 让一切变得如此痛苦。我有一个字段以存储在 MySQL 数据库中所需的格式存储日期和时间

 Dim AppDate As String = String.Empty
      If Not String.IsNullOrEmpty(Me.AppDate.Text.Trim) Then
         AppDate = Format(CDate(Me.AppDate.Text), "yyyy-MM-dd h:mm:ss")
      Else
        //Need to assign a null value to AppDate 
      End If

现在我需要像 DBNull 一样将 AppDate 分配给 NUll,但我不能直接这样做。如果我将 AppDate 更改为 Date 那么我没有得到所需的格式。

任何帮助表示赞赏。

提前致谢。

4

7 回答 7

10

AppDate = 什么都不行,您也可以使用 DateTime.MinValue 并更新您的业务逻辑以适当地对待它。

于 2010-03-05T22:27:14.613 回答
9

AppDate = 无

于 2010-03-05T22:25:57.267 回答
4

存储在 MySQL 数据库中所需格式的日期和时间

如果您正在构建一个日期时间字符串以保存到数据库中,那么您就大错特错了

使用 MySql 连接器/网络,您应该像这样构建您的查询:

Dim sql As String = "UPDATE `MyTable` SET `MyField` = @MyField WHERE `ID` = @MyID"
Using cn As New MySqlconnection("..your connection string here.."), _
      cmd As New SqlCommand(sql, cn)

    cmd.Parameters.Add("@MyField", MySqlDbType.DateTime).Value = MyDateTimeVar ''# NO FORMATTING NEEDED!
    cmd.Parameters.Add("@MyID", MySqlDbType.Int).Value = MyIDIntegerVar

    cn.Open()
    cmd.ExecuteNonQuery()
End Using
于 2010-03-08T22:21:46.373 回答
0
AppDate = DbNull.Value 'does this work?
于 2010-03-06T12:46:11.863 回答
0

DbNull.ToString()方法返回的字符串值是空字符串(“”),这可能暗示DbNull的字符串表示是空字符串。

于 2010-03-08T22:15:23.673 回答
0

仅当您在 connectionstring 中设置选项时, Mysql 才允许NULL使用 datetime 值。此值默认设置为。ConvertZeroDateTime=Truefalse


MySql 文档描述:

ConvertZeroDateTime(默认值:False

真让 MySqlDataReader.GetValue() 和 MySqlDataReader.GetDateTime() 为具有不允许值的日期或日期时间列返回 DateTime.MinValue。


AllowZeroDateTime(默认值:False

如果设置为 True,则 MySqlDataReader.GetValue() 为具有不允许值(例如零日期时间值)的日期或日期时间列返回 MySqlDateTime 对象,并为有效值返回 System.DateTime 对象。如果设置为 False(默认设置),则会为所有有效值返回一个 System.DateTime 对象,并为不允许的值(例如零日期时间值)引发异常。

于 2016-02-08T11:21:18.380 回答
0

这实际上是对我有用的唯一方法,只需使用 System.Data.SqlTypes.Sql 数据类型 .Null 例如当 sql 字段为 Char(3) 类型时,然后使用 System.Data.SqlTypes.SqlChars.Null ,字符串。空的或没有什么对我不起作用

    Dim SQLCom = New SqlCommand
    Dim SQLCon As New SqlClient.SqlConnection(_ConnString)
    Dim _Param5 As New SqlParameter("@FieldName", SqlDbType.Char, 3)
    With SQLCom
        .Connection = SQLCon
        .CommandText = "StoredProcedure_name"
        .CommandType = CommandType.StoredProcedure
        .Parameters.Add(_Parameter5)
    End With
  _Parameter5.Value = System.Data.SqlTypes.SqlChars.Null
于 2017-08-16T11:30:57.957 回答