当我尝试从数据库中选择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();
}
}
答案 0 :(得分:1)
将您的查询更改为:
"Select USERID from checkinout where Userid=" + id
在SQL查询中,字符串文字(或字符)需要包含在一对单引号'
中,用于分隔字符串。分隔符几乎是用于标识边界的字符 - 在字符串的情况下,单引号指定字符串的开始位置和结束位置。
由于数字的性质(例如整数),没有必要指出分隔符,例如单引号。您的代码失败了,因为当database engine看到单引号时,它期待一个字符串,但您的列是一个数字数据类型,这就是为什么您在获取数据类型不匹配时出错的原因执行你的查询。