我只想知道我的存储过程是否选择了任何行。
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:指定的强制转换无效。 我做错了什么?
答案 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;
}