Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据类型不匹配_C# - Fatal编程技术网

C# 数据类型不匹配

C# 数据类型不匹配,c#,C#,当我试图从数据库中选择userid到datatable时,出现了这个错误。第一个用户标识是一个自动编号,第二个用户标识是一个编号,数据库是一个MS Access数据库 private void () { OdbcDataAdapter ad = new OdbcDataAdapter("select userid from userinfo where BadgeNumber='" + UserID + "'", this.FM.Cn); DataTable t = new Da

当我试图从数据库中选择userid到datatable时,出现了这个错误。第一个用户标识是一个自动编号,第二个用户标识是一个编号,数据库是一个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查询中,字符串、文字或字符必须包含在一对单引号内,单引号用于分隔字符串。分隔符基本上是一个用于标识边界的字符——对于字符串,单引号指定字符串的起始位置和结束位置


例如,由于数字和整数的性质,不需要指示分隔符(如单引号)。您的代码失败,因为当看到单引号时,它需要一个字符串,但您的列是数字数据类型,这就是执行查询时出现数据类型不匹配错误的原因。

尝试删除单引号:Userid=+id+,就像在C中用双引号括住字符串文字,但对数字不这样做一样,因此在SQL中用单引号括住字符串文字,但对数字不这样做。此外,您应该完全避免连接文本,并考虑使用参数化查询。。。懂谢谢jmchiliney。我会让@HanletEscaño这样做的,因为他的评论是对这个问题的直接回答,并且也在我之前发布了。@jmchiliney-尊敬