.net——标准表达式中数据类型不匹配。

来源:百度知道 编辑:UC知道 时间:2024/05/15 06:41:19
标准表达式中数据类型不匹配。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配。

源错误:

行 55: Conn.Open();
行 56: OleDbCommand cmd1 = new OleDbCommand("select count(*) from 系统用户 where userID='"+this.yonghuming.Text+"'",Conn);
行 57: int count = Convert.ToInt32(cmd1.ExecuteScalar());
行 58: //Convert.ToInt32(CMD1.ExecuteScalar())
行 59: try

这是什么情况?以前用都没错啊,在第57行出错了,这是为什么啊?要怎么改呢?

SQL Server查询语句和Access查询语句是不一样的..
应该是你的查询语句的问题.这种方式有可能不适合Access.

你改成
OleDbCommand cmd1 = new OleDbCommand("select count(*) as totalNumber from 系统用户 where userID='"+this.yonghuming.Text+"'",Conn);

看看

楼下的。。这个其实是可以的。MSDN上的Sample code其实是这么写的。因为他的count(*)本生就是一个整型的。。
这里出现的问题,应该就是access下sql 语句的问题。。这种语句稍微有点不同于SQL Server。可能会不习惯。。。

cmd1.ExecuteScalar();
执行查询,返回结果集第一行的第一列。返回的是个object,至于具体是什么东西不清楚,反正觉得不是数字。把一个非数字对象强制转换成Int就会出错。
行 57: int count = Convert.ToInt32(cmd1.ExecuteScalar());
的代码是想得到查询结果记录数,可以改成:
int count = cmd1.ExecuteNonQuery();

你的问题应该是出在
select count(*) from 系统用户 where userID='"+this.yonghuming.Text+"'"

这句SQL有问题,你检查下你的表, 看是否有问题,你的userID 是什么数据类型,如果不是文本,不要用 单引号