做个验证登陆的页面
方法一:
com = New SqlCommand ("select * from users where username='aa' and password='bb'", scon)
if com.ExecuteScalar<>0 then
验证通过
ELSE
不通过
END IF方法二:
com = New SqlCommand ("select * from users where username='aa' and password='bb'", scon)
 Dim READ As SqlDataReader
READ = com.ExecuteReader
if READ.hasrows then
验证通过
ELSE
不通过
END IF上面2个方面一样吗?不一样的话有什么优缺点?请各位大哥说明下!!!

解决方案 »

  1.   

    select * from users where username='aa' and password='bb'改为select count(*) from users where username='aa' and password='bb'
    使用com.ExecuteScalar()就比较好。
      

  2.   

    ExecuteScalar和HASROWS两个方法本来的作用是不一样的,但这里的效果是一样的。ExecuteScalar要快点,不过不是所以SQL都可以用的。
    如果不要结果集可以这样用,如果你还想要结果集,那么第二种会好点。但如果是READ()会比第二种更好点。至少语句要短点。
      

  3.   

    肯定是executescalar了,只取第一行的第一列值,肯定比取所有行所有列的reader要快点了??
      

  4.   

    这里就应该用 ExecuteScalar应该 
    if com.ExecuteScalar == 1 then 不应该 com.ExecuteScalar<>0