最近做一个系统,碰到这个问题,就是要修改用户的密码,先要把用户的密码调出来,碰到判断用户输入的当前用户的密码是否正确的问题,就要判断返回的记录数是否大于0,下面说下我找到的一些方法(方法说明都在代码中)
1 //开始前奏部分,连接数据库 2 string connstr = WebConfigurationManager.ConnectionStrings["Mispersonalconn"].ConnectionString; 3 SqlConnection Sqlconn = new SqlConnection(connstr); 4 Sqlconn.Open(); 5 string sql = "select * from Tb_User_Login where isnull(userName,'')='" + Session["Name"] + "' and isnull(userPass,'')='" + oldPass.Text.Trim() + "'"; 6 SqlCommand cmd = new SqlCommand(sql, Sqlconn); 7 //开始方法说明 8 ////方法二 9 //SqlCommand cmd = new SqlCommand("select * from Tb_User_Login where isnull(userName,'')='" + Session["Name"] + "' and isnull(userPass,'')='" + oldPass.Text.Trim() + "'", Sqlconn); 10 //SqlDataReader read = cmd.ExecuteReader(); 11 //int i = 0; 12 //while (read.Read()) 13 //{ 14 // i++; 15 //} 16 //return i; 17 /* 18 上面的方法还可以使用如下代码来进行判断 19 int row =0; 20 row = (int)mycmd.ExecuteReade(); 21 if(row>0) 22 */ 23 24 //方法三 写入到table中后返回第一列的记录,聪明! 25 //DataSet ds = new DataSet(); 26 //ds = Query("select * from tbname"); 27 //int count = ds.Tables[0].Rows.Count; 28 Object obresult = cmd.ExecuteScalar(); 29 /* 30 * 方法四--这个不适合此题 31 * int num = (int)cmd.ExecuteNonQuery(); 32 * 使用这个是返回受影响的行数,对select无效,仅对更新,修改等语句有效 33 * 34 * / 35 36 /* 37 * 方法一 38 * 因为ExecuteScalar()返回第一列,第一行的数据。第一列第一行不为空,那么 39 * ExecuteScalar就直接对应的值,但是如果使用的是对象的话,象我上面那样,那 40 * 么还要经过一道转换,如整数需要Convert.Int32(obresult)才能获得第一行第 41 * 一列的值。 42 * 但是有第一行,但是第一列为空,那么返回的是 DBNull 。一行都没有,那么 43 * ExecuteScalar就返回null 44 * 如果没有转换,则可以直接用我下面的方法:obresult == null来判断查询结果 45 * 如果不想这样,还可以使用Convert.Tostring()来转换为字符型的空,然后来判断 46 */ 47 if (obresult == null) 48 { 49 lbMessage.Text = "当前登陆用户的密码与输入的旧密码不匹配,请重新输入!"; 50 return; 51 } 52 else 53 { 54 sql = "update [Tb_User_Login] set userPass='" 55 + NewTxtPass.Text.Trim() + "'" + "where userName='" 56 + Session["Name"] + "'"; 57 SqlCommand sc = new SqlCommand(sql, Sqlconn); 58 sc.ExecuteNonQuery(); 59 lbMessage.Text = "修改密码成功!请重新登陆!"; 60 Sqlconn.Close(); 61 Response.Redirect("Logout.aspx"); 62 } 63 }
(PS:以上转载至http://blog.csdn.net/jayxujia123/article/details/6430884)