插入记录时数据类型不匹配

时间:2015-06-19 09:17:53

标签: sql vb.net ms-access parameters insert

我有这段代码用于将记录插入Access表。

LastUpdated字段在数据库级别定义为Date/Time。插入时出现错误

Data type mismatch in criteria expression

我正在使用参数化查询来避免格式​​化值的问题而且非常奇怪,因为我有相同的代码(有更多参数)在另一个表上插入记录,其中LastUpdated以相同的方式定义它工作正常。

有什么想法吗?

           SqlQuery = "INSERT INTO History (ActivityID, LastUpdated) VALUES (@p1,@p2)"

            With sqlcommand
                .CommandText = SqlQuery
                .Connection = SQLConnection
                .Parameters.AddWithValue("@p1", IDAct)
                .Parameters.AddWithValue("@p2", DateTime.Today)
            End With
            result = sqlcommand.ExecuteNonQuery()
            If (result = 1) Then

                LabelWarning.Text = "Activity filled"
                LabelWarning.BackColor = Color.ForestGreen
                LabelWarning.Visible = True
                ButtonSave.Visible = False
                ButtonBack.Visible = False
                ButtonOK.Visible = True
                BlockControls()
            End If

1 个答案:

答案 0 :(得分:1)

可能问题与参数占位符有关。

此MSDN文档声明OleDbCommand不支持命名参数(仅限位置),正确的占位符应为​​“?”而不是“@ p1”。

https://msdn.microsoft.com/en-us/library/yy6y35y8%28v=vs.110%29.aspx

修改

结论是,占位符不必严格遵守doc语法。只有订单必须绝对保留。

明确地声明参数类型似乎可以解决问题:

.Parameters.Add("@p2", OleDbType.DBTimeStamp)
.Parameters("@p2").Value = DateTime.Today