My mistake. I should have used.
"Select count(*) from [users] where [userid]=@uid and [password]=@pword"
since I used
Convert.ToInt32(cmd.ExecuteScalar())>= 1
which requires numeric result.
1, 2 and 3 worked after I fixed my error in my select query.