条件表达式中的数据类型不匹配

Posted

技术标签:

【中文标题】条件表达式中的数据类型不匹配【英文标题】:Data type mismatch in criteria expression 【发布时间】:2009-11-21 09:57:11 【问题描述】:

我在 VB.NET 中有一个项目,使用 Ms Access 作为后端...在将数据插入表时,查询和数据类型错误没有错误,但有时会发生 OleDB 异常 错误是“”。 查询是....

Dim cmdstr1 As String = ""
        Dim constr As String = ""
          Dim sqlQuery As String = ""
        constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\PhoneDiary\MyDiary.mdb"

 cmdstr = "Insert Into [DetailData]([ShortName],[Title],[FirstName],[MiddleName],[LastName],[Occupation],[DOB],[Gender],[Country],[State],[Address],[ZipCode],[City],[Memo],[CategoryId],[SubCategoryId],[FavouritesID],[PhotoPath],[vCardPath]) VALUES(aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss)"

  con = New OleDbConnection(constr)
  com = New OleDbCommand(cmdstr, con)
  con.Open()
 com.Parameters.AddWithValue("aa", xx)
 com.Parameters.AddWithValue("bb", cmbTitle.Text)
 com.Parameters.AddWithValue.....
 com.Parameters.AddWithValue....
 .....................
......
 com.ExecuteNonQuery()-------"Data type mismatch in criteria expression"  Here occurs Error

那么请你或任何人帮我解决这个问题

【问题讨论】:

很明显,输入的字段之一的 Access 格式不正确。我们需要更详细地了解发生错误时插入的值以及插入的表结构。 【参考方案1】:

对于 OP,您能否发布一个发生 OleDbException 时 cmdstr 值的示例?我怀疑 mqbt 是正确的,这可能是您的 DOB 字段无法解析 DateTime 提供的任何格式。

作为一个相关问题,使用 OleDbCommand.Parameters.AddWithValue 以这种方式更改 SQL 字符串中的参数是否是一种好习惯?

我总是在 VBA Access 中构建 SQL 字符串,只需将字符串与参数连接起来,然后使用 Docmd.RunSql() 执行它,这对于带有数十个参数的长 SQL 字符串来说似乎很糟糕。但是看参数和类型很简单。我做错了吗?

【讨论】:

【参考方案2】:

详细表达您的不匹配错误,有助于解决它在哪里引发问题,针对哪种数据类型。否则你可以在error throw messagebox中详细检查错误

【讨论】:

以上是关于条件表达式中的数据类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章

错误“条件表达式中的数据类型不匹配”

条件表达式中的数据类型不匹配

MS Access - 条件表达式中的数据类型不匹配

条件表达式中的数据类型不匹配

条件表达式中的 C# 数据类型不匹配

条件表达式访问中的查询数据类型不匹配