条件表达式中的数据类型不匹配 (Access DB)

Posted

技术标签:

【中文标题】条件表达式中的数据类型不匹配 (Access DB)【英文标题】:Data type mismatch in criteria expression (Access DB) 【发布时间】:2017-07-25 03:30:06 【问题描述】:

我在数据库表中的数据类型是短文本,我不确定为什么会在command2.ExecuteNonQuery(); 收到此错误

错误信息

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

Additional information: Data type mismatch in criteria expression.

我的代码

OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = con;
cmd1.CommandText = "SELECT * FROM Customers Where FirstName=@FirstName OR LastName=@FirstName OR NRIC=@FirstName";
cmd1.Parameters.AddWithValue("@FirstName", txtSearch.Text);
OleDbDataReader read2 = cmd1.ExecuteReader();
string id = "";
while(read2.Read())

    id = read2["id"].ToString();

OleDbCommand command2 = new OleDbCommand();
command2.CommandText = "UPDATE CheckIn_Details SET ModeOfCheckIn='True' WHERE ID='" + id + "'";
command2.Connection = con;
command2.ExecuteNonQuery(); 

【问题讨论】:

ModeOfCheckIn&ID的数据类型是什么?错误很明显:第二个查询中使用的数据类型不匹配。 可以说 ModeOfCheckIn 是短文本,ID 是自动编号 【参考方案1】:

如果 ID 是自动编号,则不需要引号。试试这个:

command2.CommandText = "UPDATE CheckIn_Details SET ModeOfCheckIn='True' 
WHERE ID=" + id;

【讨论】:

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

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

尝试插入 Access 数据库时,条件表达式中的数据类型不匹配错误

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

“条件表达式中的数据类型不匹配”错误将日期插入 Access 数据库中的日期/时间字段

运行时错误 3464:条件表达式中的数据类型不匹配

使用访问数据类型自动编号的条件表达式c#中的数据类型不匹配