查询回来的记录行数为什么总是负值

查询返回的记录行数为什么总是负值
查询判断表中是否有同一字段值的记录,有和没有时,跟踪到的N值都是负一,为什么啊,找不到原因在哪
 bool CheckSbname(string sbname)
        {
            bool check = true;
            using (SqlConnection conn = new SqlConnection(DBCSring.connString))
            {
                string sql = string.Format("select count(*) from Tb_Worktime where WtSbname='{0}'", sbname);
                SqlCommand cmd = new SqlCommand(sql, conn);
                conn.Open();
                int n = Convert.ToInt32(cmd.ExecuteNonQuery());
                if (n >0)
                {
                    MessageBox.Show("记录已存在!");
                    check = false;
                }
            }
            return check;
        }

------解决思路----------------------
cmd.ExecuteNonQuery()
->
cmd.ExecuteScalar();
------解决思路----------------------
楼上曹版正解,cmd.ExecuteNonQuery是返回受影响的行数,也就是增加,删除或者修改时候才能正确跟踪,你这个是查询,应该返回第一行第一列,用ExecuteScalar