让我说这个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)
它最初工作正常,但是当我离开没有值的数字字段时,它会给出:"数据类型在条件表达式中不匹配"。我该如何解决这个问题?
答案 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