数据类型不匹配

时间:2015-08-31 04:24:55

标签: c#

当我尝试从数据库中选择userid到datatable时出现此错误。第一个userid是自动编号,第二个USERID是数字,数据库是MS Access DB。

private void ()
{
    OdbcDataAdapter ad = new OdbcDataAdapter("select userid from userinfo where BadgeNumber='" + UserID + "'", this.FM.Cn);
    DataTable t = new DataTable();
    ad.Fill(t);
    ad.Dispose();
    if (t.Rows.Count > 0)
    {
        OdbcCommand cmd = new OdbcCommand();
        cmd.Connection = this.FM.Cn;

        string id = t.Rows[0][0].ToString();
        //Check Date
        OdbcDataAdapter add = new OdbcDataAdapter("Select USERID from checkinout where Userid='" + id + "'", this.FM.Cn);
        DataTable tc = new DataTable();
        add.Fill(tc); // <- I gotta error here.
        add.Dispose();
    }
}

1 个答案:

答案 0 :(得分:1)

将您的查询更改为:

"Select USERID from checkinout where Userid=" + id

在SQL查询中,字符串文字(或字符)需要包含在一对单引号'中,用于分隔字符串。分隔符几乎是用于标识边界的字符 - 在字符串的情况下,单引号指定字符串的开始位置和结束位置。

由于数字的性质(例如整数),没有必要指出分隔符,例如单引号。您的代码失败了,因为当database engine看到单引号时,它期待一个字符串,但您的列是一个数字数据类型,这就是为什么您在获取数据类型不匹配时出错的原因执行你的查询。