繁体   English   中英

ASP.NET C#验证用户名和密码

[英]ASP.NET C# Validating username and password

我正在尝试从MySql服务器验证用户名和密码。 登录验证有效,但我一生都无法弄清楚为什么“创建新用户”验证无效。

这是用于注册新用户的代码。 发生了什么事?

catch (Exception)
    {
        Label1.Text = "Brukernavnet er allerede i bruk";
    } 

看起来这部分^某种程度上对我来说是毁了它,每当我测试运行此代码时,我都会收到此消息。

protected void newBtn_Click(object sender, EventArgs e)
    {
        String cs = "Database=trafikkskole; User=user; Password=password";
        MySqlConnection dbconnect = new MySqlConnection(cs);

        try
        {

            dbconnect.Open();
            cmd.CommandText = "INSERT INTO user (username, password) VALUES (@un, @pw)";
            cmd.Parameters.AddWithValue("@un", inputUser.Text);
            cmd.Parameters.AddWithValue("@pw", inputPw.Text);
            cmd.Connection = dbconnect;
            int a = cmd.ExecuteNonQuery();

            if (a > 0)
            {
                Label1.Text = "Gratulerer! Du har nå laget en bruker!";
            }

            else
            {
                Label1.Text = "ERROR";
            }

        }

        catch (Exception)
        {
            Label1.Text = "Brukernavnet er allerede i bruk";
        }

        finally
        {
            dbconnect.Close();
        }
    }

}

编辑:

如果我这样尝试:

protected void newBtn_Click(object sender, EventArgs e)
    {
        String cs = "Database=trafikkskole; User=root; Password=root";
        MySqlConnection dbconnect = new MySqlConnection(cs);

        String sql = "SELECT * FROM user";
        MySqlCommand cmd = new MySqlCommand(sql, dbconnect);
        da = new MySqlDataAdapter(cmd);
        MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
        ds = new DataSet("TEST");
        da.Fill(ds, "user");
        Response.Write(ds.Tables["user"].Rows.Count);     

        try
        {

            dbconnect.Open();
            cmd.CommandText = "INSERT INTO user (username, password) VALUES (@un, @pw)";
            cmd.Parameters.AddWithValue("@un", inputUser.Text);
            cmd.Parameters.AddWithValue("@pw", inputPw.Text);
            cmd.Connection = dbconnect;
            int a = cmd.ExecuteNonQuery();

            if (a > 0)
            {
                Label1.Text = "Gratulerer! Du har nå laget en bruker!";
            }

            else
            {
                Label1.Text = "ERROR";
            }

        }



        catch (Exception Exception)
        {
            Label1.Text = "Brukernavnet er allerede i bruk";

        }

        finally
        {
            dbconnect.Close();
        }
    }

}

最终可能使用户没有用户名或密码。

有很多事情可能会出错。 您应该检查exception.message以获得对它可能是什么的见解。

例如,在catch语句中放置一个断点,看看是否为诸如...之类的事件引发了异常,该用户名是否已经存在,并且SQL引发了错误。 ...或者用户名/密码为空,太长等...

无论如何,将catch语句更改为catch(Exception exception)并查看异常是什么。

我要感谢大家的努力,找到了一个可行的解决方案,并将其发布在此处以供将来参考。

protected void newBtn_Click(object sender, EventArgs e)

        {
        String cs = "Database=trafikkskole; User=root; Password=root";
        MySqlConnection dbconnect = new MySqlConnection(cs);

        try
        {

            if (!string.IsNullOrWhiteSpace(inputUser.Text) && !string.IsNullOrWhiteSpace(inputPw.Text))
            {
                dbconnect.Open();
                Label1.Text = "Gratulerer! Du har nå laget en bruker!";
                string qry = "INSERT INTO user(username, password) VALUES (@un, @pw)";
                cmd = new MySqlCommand(qry, dbconnect);
                cmd.Parameters.AddWithValue("@un", inputUser.Text);
                cmd.Parameters.AddWithValue("@pw", inputPw.Text);
                cmd.Connection = dbconnect;
                cmd.ExecuteNonQuery();
            }

            else
            {
                Label1.Text = "ERROR";
            }

        }

        catch (Exception)
        {
            Label1.Text = "Brukernavnet er allerede i bruk";

        }


        finally
        {
            dbconnect.Close();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM