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

Posted

技术标签:

【中文标题】OleDb.OleDbException 条件表达式中的数据类型不匹配【英文标题】:OleDb.OleDbException Data type mismatch in criteria expression 【发布时间】:2021-01-18 04:39:20 【问题描述】:

我想要这样的查询,但出现错误:

"Select * 
 From Products 
 Where (ProductName)  = '" + productName.Text + "' and  (Revise) = '" + a + "'";

我有产品名称并在同一个表中作为 2 个不同的列进行修订。

我有几行产品名称相同但修订日期不同。我正在尝试选择正确的。

con.Open();

OleDbCommand select = new OleDbCommand();
select.Connection = con;

Object revize = revizyonlar.SelectedItem;

if(revize != null)

    string a = revizyonlar.SelectedItem.ToString();
    System.DateTime b = Convert.ToDateTime(a);
    a = b.Date.ToShortDateString();
    a = "Select * From Products where (ProductName)  = '" + productName.Text + "' and  (Revise) = '" + a + "'";

    select.CommandText = a;

else
    select.CommandText = "Select * From Products Where (ProductName)  = '" + productName.Text + "'";

OleDbDataReader reader = select.ExecuteReader();

while (reader.Read())


【问题讨论】:

使用 SQL 参数和这个问题 - 以及许多其他更可怕的问题 - 将消失。自近 20 年前发布 NET SQL 以来,这就是编造 NET SQL 的错误方式 【参考方案1】:

日期表达式在 Access 中由 octothorpes 分隔,所以:

a = b.Date.ToString("yyyy'/'MM'/'dd");
a = "Select * From Products Where ProductName = '" + productName.Text + "' And Revise = #" + a + "#";

也就是说,请听 Ňɏssa。

【讨论】:

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

OleDb 异常 System.Data.OleDb.OleDbException (0x80004005): 超出系统资源

System.Data.OleDb.OleDbException: 'UPDATE 语句中的语法错误。 '

System.Data.OleDb.OleDbException:超出系统资源

该站点突然返回 System.Data.OleDb.OleDbException:未指定错误可能是啥?

System.Data.OleDb.OleDbException 无效参数

System.Data.OleDb.OleDbException:定义的字段太多