存储过程的executeScalar

时间:2013-09-24 07:34:29

标签: sql asp.net-mvc

我只想知道我的存储过程是否选择了任何行。

 using (var conn = new System.Data.SqlClient.SqlConnection(
                  "Data Source=DANIEL-DATOR;Initial Catalog=EvaluationTest;Integrated    Security=True"))
        using (var command = new SqlCommand("countRecords", conn))
        {
            conn.Open();
            command.Parameters.Add(new SqlParameter("@usermail", prop.Sendmail));
            command.CommandType = CommandType.StoredProcedure;

            int userCount = (int)command.ExecuteScalar();
            conn.Close();


            if (userCount > 0)
            {
                return 1;
            }

                return 2;

我从代码中得到此错误:System.InvalidCastException:指定的强制转换无效。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果结果集为空,则ExecuteScalar将返回null;请记住,此函数的工作方式是它获取返回数据第一行第一列的值。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx

必须是您的存储过程根本不返回任何内容;所以你应该检查结果是否为空:

var result = command.ExecuteScalar();
if (result!=null)
{
    //you got some data
     Int32.TryParse(result.ToString, out userCount);
     return user Count>0?1:2;
}