您的位置:首页 > 其它

关于获取每一条查询语句的记录数的方法总结

2011-05-18 23:15 591 查看
最近做一个系统,碰到这个问题,就是要修改用户的密码,先要把用户的密码调出来,碰到判断用户输入的当前用户的密码是否正确的问题,就要判断返回的记录数是否大于0,下面说下我找到的一些方法(方法说明都在代码中)







//开始前奏部分,连接数据库
            string connstr = WebConfigurationManager.ConnectionStrings["Mispersonalconn"].ConnectionString;
            SqlConnection Sqlconn = new SqlConnection(connstr);
            Sqlconn.Open();
            string sql = "select * from Tb_User_Login where isnull(userName,'')='" + Session["Name"] + "' and isnull(userPass,'')='" + oldPass.Text.Trim() + "'";
            SqlCommand cmd = new SqlCommand(sql, Sqlconn);
            //开始方法说明
            ////方法二
            //SqlCommand cmd = new SqlCommand("select * from Tb_User_Login where isnull(userName,'')='" + Session["Name"] + "' and isnull(userPass,'')='" + oldPass.Text.Trim() + "'", Sqlconn);
            //SqlDataReader read = cmd.ExecuteReader();
            //int i = 0;
            //while (read.Read())
            //{
            //    i++;
            //}
            //return i;
            /*
              上面的方法还可以使用如下代码来进行判断
              int row =0;
              row = (int)mycmd.ExecuteReade();
              if(row>0)
            */

            //方法三 写入到table中后返回第一列的记录,聪明!
            //DataSet ds = new DataSet();
            //ds = Query("select * from tbname");
            //int count = ds.Tables[0].Rows.Count;
            Object obresult = cmd.ExecuteScalar();
            /*
             * 方法四--这个不适合此题
             * int num = (int)cmd.ExecuteNonQuery();
             * 使用这个是返回受影响的行数,对select无效,仅对更新,修改等语句有效
             * 
             * /
             
            /*
             * 方法一
             * 因为ExecuteScalar()返回第一列,第一行的数据。第一列第一行不为空,那么
             * ExecuteScalar就直接对应的值,但是如果使用的是对象的话,象我上面那样,那
             * 么还要经过一道转换,如整数需要Convert.Int32(obresult)才能获得第一行第
             * 一列的值。
             * 但是有第一行,但是第一列为空,那么返回的是 DBNull 。一行都没有,那么
             * ExecuteScalar就返回null
             * 如果没有转换,则可以直接用我下面的方法:obresult == null来判断查询结果
             * 如果不想这样,还可以使用Convert.Tostring()来转换为字符型的空,然后来判断
             */
            if (obresult == null)
            {
                lbMessage.Text = "当前登陆用户的密码与输入的旧密码不匹配,请重新输入!";
                return;
            }
            else
            {
                sql = "update [Tb_User_Login] set userPass='"
                + NewTxtPass.Text.Trim() + "'" + "where userName='"
                 + Session["Name"] + "'";
                SqlCommand sc = new SqlCommand(sql, Sqlconn);
                sc.ExecuteNonQuery();
                lbMessage.Text = "修改密码成功!请重新登陆!";
                Sqlconn.Close();
                Response.Redirect("Logout.aspx");
            }
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: