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

ASP.NET C#验证用户名和密码,c#,mysql,asp.net,validation,C#,Mysql,Asp.net,Validation,我正在尝试从MySql服务器验证用户名和密码。登录验证正在工作,但我一辈子都不明白为什么“创建新用户”验证不起作用 以下是注册新用户的代码。发生的事情是 catch (Exception) { Label1.Text = "Brukernavnet er allerede i bruk"; } 似乎这一部分在某种程度上毁了我,每当我测试运行这段代码时,我都会收到这条消息 protected void newBtn_Click(object sender, Ev

我正在尝试从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();
        }
    }

你能用你的异常日志编辑吗。例如
catch(Exception ex){Debug.Writeline(ex.ToString());}
如果您试图捕获插入的结果,而不是将
int a=cmd.ExecuteNonQuery()放入尝试使用
inta=cmd.ExecuteScalar()@amarnath我唯一能提供的是:CS0169“login.da”字段从未使用过。CS0169从未使用“login.ds”字段。CS0169从未使用“login.cb”字段。@Flxtr我尝试了ExecuteScalar();结果是:CS0266 C#无法隐式地将类型“object”转换为“int”。存在显式转换(是否缺少强制转换?)当然,是
ExecuteScalar()的结果
返回一个字符串,应该将其转换为int,一种方法是使用
inta=convert.ToInt32(cmd.ExecuteScalar())数据库当前只有一个用户,无论我键入什么,都会弹出此消息。发生的情况如下:CS0168 C#变量“Exception”已声明但从未使用我认为这不是错误消息,这是警告消息。