条件表达式中的数据类型不匹配
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中详细检查错误
【讨论】:
以上是关于条件表达式中的数据类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章