0

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

 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: Specified cast is not valid。我究竟做错了什么?

4

1 回答 1

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;
}
于 2013-09-24T07:46:14.413 回答