C# 数据类型不匹配
当我试图从数据库中选择userid到datatable时,出现了这个错误。第一个用户标识是一个自动编号,第二个用户标识是一个编号,数据库是一个MS Access数据库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
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-尊敬