数据类型不匹配

本文关键字:不匹配 数据类型 | 更新日期: 2023-09-27 18:10:25

当我试图从数据库选择userid到数据表时,我得到了这个错误。第一个userid是一个自动编号,第二个userid是一个数字,数据库是一个MS Access数据库。

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();
    }
}

数据类型不匹配

将查询改为:

"Select USERID from checkinout where Userid=" + id

在SQL查询中,字符串字面量(或字符)需要被括在一对单引号'中,这对单引号用于分隔字符串。分隔符基本上是用来标识边界的字符——对于字符串,单引号指定字符串的开始和结束位置。

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