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

时间:2012-11-30 15:33:31

标签: c# asp.net ms-access

我正在尝试根据特定的选择ID填充数据集,但会收到错误

Data type mismatch in criteria expression.

我不确定为什么会出现此错误。

conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;
                                Data Source =" + Server.MapPath("App_Data\\HarryPothead.mdb"));
        conn.Open();

        DataSet ds = new DataSet();

        OleDbDataAdapter dba = new OleDbDataAdapter("SELECT * FROM [Person] WHERE [StatusIdFrn] = '" + statusID + "'", conn);
        dba.Fill(ds, "PersonName");
        DataTable dt = ds.Tables["PersonName"];

        drpPerson.DataSource = ds.Tables[0];
        drpPerson.DataTextField = "PersonName";
        drpPerson.DataBind();

        conn.Close();

或许就如何克服这个问题提供建议。

我正在选择的数据库是一个Access数据库和我从三个字段中选择的表,PersonId是AutoNumber类型,PersonName是Text类型,StatusIdFrn是数据类型Number。(drpPerson是一个DropDownList控件)

1 个答案:

答案 0 :(得分:5)

改变这个:

"SELECT * FROM [Person] WHERE [StatusIdFrn] = '" + statusID + "'"

对此:

"SELECT * FROM [Person] WHERE [StatusIdFrn] = " + statusID + ""

由于[StatusIdFrn]是数字,您需要丢弃单引号,因为它们表示文本类型。