ExecuteScalar()的返回值出错

时间:2016-11-24 13:02:11

标签: c# sql asp.net

我试图在一个int变量中获取sql查询的结果,但是我得到了对象空引用错误。有人可以指导我。

 oconn = new SqlConnection(oSession.CONNECTION_STRING);
 oconn.Open();

 objCmd.CommandText = "select Rule_Approval_Selection from UserFile where uid=" + intUserID;
 int value = (Int32)(objCmd.ExecuteScalar());
 oconn.Close();

2 个答案:

答案 0 :(得分:5)

当命令没有行时,

ExecuteScalar()返回null。在您的情况下,如果intUserId与现有用户不对应,则会返回null

切换到int?以解决此问题:

int? value = (Int32?)(objCmd.ExecuteScalar());

现在,当数据库中存在value时,您的变量intUserId将设置为非空;否则,它将是null

答案 1 :(得分:0)

oconn = new SqlConnection(oSession.CONNECTION_STRING);
oconn.Open();
objCmd.CommandText = "select Rule_Approval_Selection from UserFile where uid="     + intUserID;
var x=objCmd.ExecuteScallar();
if (x!= null && DBNull.Value != x) 
{ 
int value = (Int32)(objCmd.ExecuteScalar());
}

oconn.Close();

试试这个......