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

时间:2017-05-14 18:30:26

标签: c# mysql asp.net validation

我试图从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();
        }
    }

}

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

2 个答案:

答案 0 :(得分:0)

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

例如,在catch语句中放置一个断点,看看是否为...之类的东西抛出了异常,因为用户名已存在且SQL正在抛出错误。 ...或者是用户名/密码为空,太久等等......

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

答案 1 :(得分:0)

我要感谢大家的努力,找到了一个有效的解决方案,将其发布在这里供将来参考。

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();
        }
    }