2010-03-05 4 views
13

kullanarak MySql boş değerler atamak için. Bennasıl emin değilim VB.NET

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 

Şimdi DBNull gibi NULL'A AppDate atamanız gerekir MySQL veritabanında depolamak için gerekli formatta tarih ve saati saklayan bir alan var, ama doğrudan bunu yapmak mümkün değilim. AppDate'i Date olarak değiştirirsem, gerekli formatı alamıyorum.

Herhangi bir yardım

takdir edilmektedir.

Teşekkürler.

+0

İpucu için işe yaramadı: .NET 4 ile kullanabilirsiniz "String.IsNullOrWhiteSpace (Me.AppDate)". –

cevap

10

AppDate = çalışmalıdır Hiçbir şey, ayrıca DateTime.MaxValue'dan kullanmak ve uygun şekilde tedavi etmek için iş mantığını güncelleyebilirsiniz.

+0

Tüm tavsiyelerin hepsi için teşekkürler. AppDate = Nothing dışında INSERT deyiminde IIF işlevini kullanmak zorunda kaldı. – fireBand

9

AppDate = Hiçbir şey

+0

Çalışmıyorsa, "0000-00-00 00:00:00" veri tabanına eklenir. Null'a girmem lazım. – fireBand

+0

Dan bahisleri gibi iş mantığını güncelleyin. Bu bir VB.NET sorunu değil. – AMissico

0
AppDate = DbNull.Value 'does this work? 
0

DbNull.ToString() yöntemi tarafından döndürülen dize değeri DBNULL dize temsil boş dizesi olduğunu ima edebilir boş dize ("") 'dir.

4

bunu tamamen yanlış yapıyoruz

Bir veritabanına kaydetmek için bir tarih saat dize inşa ediyorsanız, MySQL veritabanında depolamak için gerekli formatta tarih ve saat. MySQL Connector/Net kullanma

, böyle Sorgunuzla bina edilmelidir:

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 
0

MySQL sen connectionstring içinde ConvertZeroDateTime=True seçeneği ayarlamak yalnızca datetime için NULL değerlerini verir. Bu değer varsayılan olarak false olarak ayarlanmıştır.


MySql Documentation açıklar:

ConvertZeroDateTime (Varsayılan: Yanlış) :

Doğru olan MySqlDataReader.GetValue() ve MySqlDataReader.GetDateTime() dönüş DateTime için. İzin verilmeyen değerlere sahip tarih veya datetime sütunları için MinValue.


AllowZeroDateTime (Varsayılan: Yanlış) : True olarak ayarlanırsa

, MySqlDataReader.GetValue() iznini tarih veya tarih saat sütunları için bir MySqlDateTime nesnesi döndüren Geçerli değerler için sıfır datetime değerleri ve System.DateTime nesnesi gibi değerler. Yanlış olarak ayarlanırsa (varsayılan ayar), tüm geçerli değerler için bir System.DateTime nesnesinin döndürülmesine ve sıfır datetime değerleri gibi izin verilmeyen değerler için atılacak bir özel duruma neden olur.Bir sql alan Char (3), sonra System.Data.SqlTypes kullanmak yazın olduğunda

0

benim için çalıştı bu actully tek yolu, sadece örneğin System.Data.SqlTypes.Sql Veri Türü .Null kullanmak .SqlChars.Null, string.Empty ya da hiçbir şey beni

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