web-dev-qa-db-ja.com

VB.NETを使用してMySqlでnull値を割り当てる方法

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

ここで、AppDateをDBNullのようにNUllに割り当てる必要がありますが、直接行うことはできません。 AppDateをDateに変更すると、必要な形式が得られません。

どんな助けでも大歓迎です。

前もって感謝します。

13
fireBand

AppDate =何も機能しないはずです。また、DateTime.MinValueを使用して、ビジネスロジックを更新して適切に処理することもできます。

10
Dan

AppDate =なし

9
IniTech

mySQLデータベースに保存するために必要な形式の日付と時刻

データベースに保存する日時文字列を作成している場合、すべて間違っています

MySql Connector/Netを使用して、次のようにクエリを作成する必要があります。

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
4
Joel Coehoorn

これは実際には私にとって唯一の方法でした。たとえば、SQLフィールドがタイプChar(3)の場合は、System.Data.SqlTypes.Sqlデータ型.Nullを使用してから、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
0
Wesam

Mysqlでは、接続文字列にConvertZeroDateTime=Trueオプションを設定の場合にのみ、日時にNULL値を許可します。この値はデフォルトでfalseに設定されています。


MySqlドキュメント 説明:

ConvertZeroDateTime(デフォルト:False

MySqlDataReader.GetValue()およびMySqlDataReader.GetDateTime()が、許可されていない値を持つ日付または日時列のDateTime.MinValueを返すようにするにはTrue。


AllowZeroDateTime(デフォルト:False

Trueに設定すると、MySqlDataReader.GetValue()は、ゼロの日時値などの許可されていない値を持つ日付または日時列のMySqlDateTimeオブジェクトと、有効な値のSystem.DateTimeオブジェクトを返します。 False(デフォルト設定)に設定すると、System.DateTimeオブジェクトがすべての有効な値に対して返され、ゼロの日時値などの許可されていない値に対して例外がスローされます。

0

DbNull.ToString()メソッドによって返される文字列値は空の文字列( "")です。これは、DbNullの文字列表現が空の文字列であることを意味している可能性があります。

0
M.A. Hanin
AppDate = DbNull.Value 'does this work?
0
Robert