当我尝试在VB.Net中将参数化的sql语句运行到ms-access数据库(.accdb)时,我总是收到data type mismatch in criteria expression
错误消息。标准表达式中的数据类型不匹配。
问题出在@PartNumber
,我知道的很多,因为我直接对它进行硬编码以获得数组的值,并且它工作正常。我只是不知道如何解决它。
在表PartNumber
是文本字段,并且它是在VB.Net一个字符串,它的长度是在表20和是远不在VB形式20中被读取。
这里是有问题的代码:
For i As Integer = 0 To trackParts.GetUpperBound(0) - 1
If (trackParts(i, 4) = "1") Then
cmd.CommandText = "INSERT INTO ServiceParts ([IncidentNumber], [PartNumber], [Quantity]) Values (@IncidentNumber, @PartNumber, @Quantity);"
cmd.Parameters.AddWithValue("@IncidentNumber", incidentNumberLabel.Text()
.ToString().ToUpper().Trim())
cmd.Parameters.AddWithValue("@PartNumber", trackParts(i, 0)
.ToString.ToUpper().Trim())
cmd.Parameters.AddWithValue("@Quantity", Convert.ToInt32(trackParts(i, 3)))
cmd.ExecuteNonQuery()
End If
Next
在此先感谢您的帮助,如果有任何需要的信息只是让我知道,我会发布它。我还会用我尝试过的新事物更新这个新事物,因为我想要尝试新事物。
发表表格定义。这可能与表中定义的列类型和数据不匹配。 – RBarryYoung 2013-04-28 22:25:15
尝试将'trackParts(I,0)'分配给正确类型的临时变量,并使用“AddWithValue”调用中的临时变量。 – 2013-04-28 22:38:38
我该如何发表表格定义?发布文本太长了。 但是表格中的PartNumber是数据类型TEXT,而我发送给它的是ToString(),而不管它是否是String数据类型。 编辑:彼得,我已经试过了。给出同样的错误。 – Josiah 2013-04-28 22:46:58