如何插入包含没有值的int字段的记录?

时间:2014-04-29 06:32:36

标签: sql vb.net ms-access

让我说这个Access表有一个文本字段和4个数字字段。以下是相关代码:

Dim cmd As New OleDb.OleDbCommand
    cmd.Connection = con
    cmd.CommandType = CommandType.Text
    cmd.CommandText = "insert into Table1" _
    & " values(?, ?, ?, ?, ?)"
    cmd.Parameters.AddWithValue("@a", a.Text)
    cmd.Parameters.AddWithValue("@b", CInt(b.Text))
    cmd.Parameters.AddWithValue("@c", CInt(c.Text))
    cmd.Parameters.AddWithValue("@d", CInt(d.Text))
    cmd.Parameters.AddWithValue("@e", CInt(e.Text))

    ole.InsertCommand = cmd
    ole.InsertCommand.ExecuteNonQuery()
    ds.Clear()
    ole.Fill(ds)

它最初工作正常,但是当我离开没有值的数字字段时,它会给出:"数据类型在条件表达式中不匹配"。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您不需要将值转换为整数。也就是说,使用以下功能应该可行。 像这样使用它: cmd.Parameters.AddWithValue(" @ b",ValueOrNull(b.Text))

Public Function ValueOrNull(ByVal obJ As Object) As Object
    If obJ Is Nothing OrElse obJ Is DBNull.Value OrElse String.IsNullOrEmpty(obJ.ToString) Then
        Return DBNull.Value
    Else
        Return obJ
    End If
End Function