由于致命错误,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);
}
当我运行登录时,我收到
命令执行过程中遇到致命错误
提前感谢您能给我的任何帮助或提示。
要登录,您必须使用SELECT * FROM tbl where username = @userid and password = @password
,而不是您使用的insert语句。(我假设您提供的第一个代码是用于登录的(。然后,可以使用ExecuteReader
或DataAdapter
来填充DataSet
,而不是使用ExecuteNonQuery
。
您收到了致命错误,因为您为登录而编写的插入查询(6->@userid,@email,@passone,@passtwo,@lastname,@firstname
(和提供的参数(2->@userid,@passone
(的数量不同。