ExecuteScalar为查询“grant connect,resource to user”返回null。为什么?

时间:2014-10-23 17:11:13

标签: c# asp.net c#-4.0

我处于需要检查用户是否已成功授予访问权限的情况。但是ExecuteScalar总是向我返回null值。所以我不确定如何验证以下查询是否已成功执行?

string query= "grant connect,resource to user";
oleDbCommand cmd = new oleDbCommand(query,conn);
object grantStatus = cmd.ExecuteScalar();    
if(grantStatus!=null)
{
response.write "Granted Access Successfully";
}

虽然它为用户成功授予了访问权限,但grantStatus对象始终具有空值。我该如何验证?

1 个答案:

答案 0 :(得分:2)

由于授权不是查询,因此ExecuteScalar在授予的情况下没有要返回的行/列值。它是DDL(实际上是DCL)。

查看ExecuteNonQuery()以获取DDL类型命令。没有返回数据时。它实际上返回-1。

使用ExecuteScalar,您必须假设只要没有抛出异常,并且您的语句有效,就没有错误。

您的代码缺少的是try / catch以及using block

不要完全重复自己,请在此处查看我的答案:https://stackoverflow.com/a/26534021/257090