日期:2014-05-17  浏览次数:20414 次

SqlDataReader的问题
在写登陆的代码时候,status = "0";
if (dr.Read())
和写成wlile(dr.Read())
有区别吗?
  string 
  SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=;database=stu");
        con.Open();
        string sql = "select * from biao where Name=@name and Pwd=@password";
        SqlParameter[] para = new SqlParameter[] 
            {
             new SqlParameter("@name",SqlDbType.VarChar,50),
             new SqlParameter("@password",SqlDbType.VarChar,50)
            };
        para[0].Value = TextBox1.ToString().Trim();
        para[1].Value = TextBox2.ToString().Trim();
        SqlCommand cmd = new SqlCommand(sql,con);
        SqlDataReader dr = SqlHelper.ExecuteReader(sql, CommandType.Text, para);
        if (dr.Read())
        {
            status = "1";
        }
        else
        {
            status = "0";
        }
        dr.Close();
        con.Close();
        return status;

------解决方案--------------------
if (dr.Read())
 和写成wlile(dr.Read())
 有区别吗?
如果可以read ,就执行一次 .
而while 则循环读 .  楼上已经解答的很详细了
------解决方案--------------------
可以使用HasRows去判断记录是否存在
http://www.cnblogs.com/insus/articles/2033412.html
------解决方案--------------------
看看微软对这个Read()方法是怎样写的: