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

问题描述

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

errors

"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())
{
}

解决方法

日期表达式在Access中由 octothorpes 分隔,因此:

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

也就是说,请听Ňɏssa。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...