由于致命错误,WinForm不接受来自MySql的用户输入

本文关键字:MySql 用户 输入 不接受 致命错误 WinForm | 更新日期: 2023-09-27 18:01:08

我正在创建一个WinForm注册表,最近切换了我的整个代码以删除我得到的SQL注入。我现在可以注册用户存储在我的数据库中,但我不能使用该信息登录

string constring = "datasource=127.0.0.1;port=3306;username=root;password=welcome";
string Query = "insert into userdatabase.users (userid, email, passone, passtwo, lastname, firstname) values(@userid,@email,@passone,@passtwo,@lastname,@firstname)";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmd = new MySqlCommand(Query, conDatabase);
cmd.Parameters.AddWithValue("userid", this.userid_txt.Text);
cmd.Parameters.AddWithValue("passone", this.passone_txt.Text);
try
{
    conDatabase.Open();
    cmd.ExecuteNonQuery();
    MessageBox.Show("Welcome to iDSTEM!");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

这是我登录按钮的代码,我知道AddWithValue不是需要的,但这是我目前必须存储的值,我想知道我应该将其更改为什么。

这是我将数据存储到MySql中的代码。

string constring = "datasource=127.0.0.1;port=3306;username=root;password=welcome";
string Query = "insert into userdatabase.users (userid, email, passone, passtwo, lastname, firstname) values(@userid,@email,@passone,@passtwo,@lastname,@firstname)";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmd = new MySqlCommand(Query, conDataBase);
cmd.Parameters.AddWithValue("userid", this.userid_txt.Text);
cmd.Parameters.AddWithValue("email", this.email_txt.Text);
cmd.Parameters.AddWithValue("passone", this.passone_txt.Text);
cmd.Parameters.AddWithValue("passtwo", this.passtwo_txt.Text);
cmd.Parameters.AddWithValue("lastname", this.lastname_txt.Text);
cmd.Parameters.AddWithValue("firstname", this.firstname_txt.Text);
try {
    conDataBase.Open();
    cmd.ExecuteNonQuery();
    MessageBox.Show("Welcome to iDSTEM!");
}
    catch (Exception ex)
{
        MessageBox.Show(ex.Message);
    }

当我运行登录时,我收到

命令执行过程中遇到致命错误

提前感谢您能给我的任何帮助或提示。

由于致命错误,WinForm不接受来自MySql的用户输入

要登录,您必须使用SELECT * FROM tbl where username = @userid and password = @password,而不是您使用的insert语句。(我假设您提供的第一个代码是用于登录的(。然后,可以使用ExecuteReaderDataAdapter来填充DataSet,而不是使用ExecuteNonQuery

您收到了致命错误,因为您为登录而编写的插入查询(6->@userid,@email,@passone,@passtwo,@lastname,@firstname(和提供的参数(2->@userid,@passone(的数量不同。