使用LINQtoSQL通过VB将空值插入SQL中的smalldatetime列?

时间:2009-09-08 16:34:50

标签: wpf vb.net linq-to-sql

我在SQL中有一个可以具有空值的smalldatetime列,但是当我尝试使用SqlTypes.SqlDateTime.Null和LINQtoSQL插入空值时,它会放入1/1/1900而不是NULL。

插入null的最佳方法是什么,或者我现在正在执行此操作。如果我现在正在使用正确的方法,应该采取什么措施来防止在WPF应用程序中的字段上显示1/1/1900。

数据库是SQL 2008。

由于

(编辑)代码

Public Shared Function saveNewClient(ByVal clientName As String, ByVal active As Boolean, ByVal maintRenew As SqlTypes.SqlDateTime, ByVal currOp As Int32) As Int32
Try
    Dim c As New client()
    c.crGUID = Guid.NewGuid
    c.crClientName = clientName
    c.crMaintenanceRenewal = maintRenew
    c.crActive = active
    c.crAddOp = currOp
    c.crAddDate = DateTime.Now
    c.crEditOp = currOp
    c.crEditDate = DateTime.Now

    db.clients.InsertOnSubmit(c)
    db.SubmitChanges()
    Return c.crID
Catch ex As Exception
    Return Nothing
End Try

结束功能

2 个答案:

答案 0 :(得分:2)

您需要做的就是使用可以为空的数据类型。查看函数的签名,看起来你正在为maintRenew传入一个SqlDateTime。

ByVal maintRenew As SqlTypes.SqlDateTime

相反,尝试传递可以为空的DateTime,例如:

ByVal maintRenew As DateTime?

在调用函数中,您可以传入标准的“Nothing”,(在(C#)中为null,或者根据需要传递DateTime),而不是传入DBNull。

答案 1 :(得分:0)

您是否尝试过null而不是SqlTypes.SqlDateTime.Null? 数据库表行是否显示为空?