Code Bye

C#如何实现帐号密码检测?

如何实现将窗口控件输入的值和数据库中的值进行查询匹配?以下是已经写好的

 public partial class Base 
    {
        protected static string strConn = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString;

        public static int SqlExecuteNonQuery(string strSQL)
        {
            SqlConnection myCn = new SqlConnection(strConn);//设置数据库连接对象
            SqlCommand myCmd = new SqlCommand(strSQL, myCn);//设置Command对象
            try
            {
                myCn.Open();//打开数据库连接
                myCmd.ExecuteNonQuery();//执行SQL语句
                return 0;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                myCmd.Dispose();
                myCn.Close();//关闭数据库连接
            }
        }

        protected static DataSet SqlDataSet(string strSQL)
        {
            SqlConnection myCn = new SqlConnection(strConn);
            try
            {
                myCn.Open();
                SqlDataAdapter sda = new SqlDataAdapter(strSQL, myCn);
                DataSet ds = new DataSet();
                sda.Fill(ds);
                return ds;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                myCn.Close();
            }
        }
    }

这是Base类,web.config中已经配置好了

protected void Login_Click(object sender, EventArgs e)
        {
            /*读取用户名和密码信息*/
            /*创建用户对象,判断当前用户身份和信息是否正确*/
            cs_Admin admin = new cs_Admin();
            admin.userID = UName.Text.Trim();
            admin.Password = Pwd.Text.Trim();
            if (txtCode.Text.Trim() == (string)Session["check"])
                if (admin.GetAdmin())
                {
                    Session["userID"] = UName.Text.Trim();
                    Session["Password"] = Pwd.Text.Trim();
                    Response.Redirect("~\index.aspx");
                }
                else 
                {
                    Response.Write("<Script>alert(""用户名或密码错误!"");history.back(-1);</Script>");
                    txtCode.Text = "";
                }
                    
        }

这是按钮响应,就是想请教一下GetAdmin的方法该怎么写?百度的然后自己改的如下:

public class cs_Admin:Base  //由类Base派生
    {
        #region 属性,对应Admin中的字段
        public string userID;
        public string Password;
        #endregion
        //类中定义属性与表Admin中的字段同名

        public bool GetAdmin()
        {
            SqlConnection conn = new SqlConnection(strConn);//设置数据库连接对象 
            string strSQL="select count(id) from Admin where userID=@userID and Password=@Password";
            SqlCommand cmd = new SqlCommand(strSQL, conn);//设置Command对象        
            cmd.Parameters.Add(new SqlParameter("@userID", userID));
            cmd.Parameters.Add(new SqlParameter("@Password", Password));
            //这里就是返回的结果 0 表示不匹配 1表示一条匹配 >1userid未设为唯一键或被SQL注入列如
            try
            {
                string result = cmd.ExecuteScalar() + "";
                conn.Dispose();
                cmd.Dispose();
                if (result == "0")
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch
            {
                return false;
            }

数据库Admin表中就只有一条记录,帐号是user密码为password,死活就是提示帐号密码不正确。。。求教!

20分
在你的 string result = cmd.ExecuteScalar() + “” 语句这里设置断点,观察几个输入属性的值,然后单步执行几条语句看看流程。

不要随便写

            try
            {
            }
            catch
            {
                return false;
            }

这种语句。当程序执行有异常时,你连哪条语句出错都不知道,还怎样立即进入调试器对抛出异常的调用栈进行调试?写try…catch你就丧失了调试能力,这种语句实际上通常只是在release版本中才(条件编译)出现的,在debug中则不出现。

引用 楼主 scar112233 的回复:

这是按钮响应,就是想请教一下GetAdmin的方法该怎么写?百度的然后自己改的如下:

其实怎么写、怎么抄这并无所谓,关键是你要知道一个程序员该调试程序,而不是只抄程序。

其实才刚刚接触c#然后书上写的不全,很多东西基本都没讲(比如如何调试就没说。。),老师也只是讲下控件的用法和属性。。
看看数据库里面的密码是加密的吗?
引用 4 楼 zhuankeshumo 的回复:

看看数据库里面的密码是加密的吗?

不是加密的

就不能踏踏实实一步一步调试么, 说不定已经报错了.
可否提供demo?帮你调试一把
10分
很同情你,可是像你这样的人太多了,不可能都帮助到。建议你学会自学。事实上,谁的老师不一样都是白痴。别人怎么学会的。还不是自学。
编程,要学会调试程序,这个很重要。
10分
打开你的项目,按F5,打断点单步调试。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#如何实现帐号密码检测?