ExecuteScalar[
^] returns the 'first column of the first row' - why do you think it is a long?
[UPDATE AS RESPONSE TO OP COMMENT]
To see only how many records a query returns use
ExecuteNonQuery[
^] - it has a integer return value, the number of rows.