我正在创建一个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语句。 (我假设您提供的第一个代码用于登录)。然后,可以使用ExecuteNonQuery
或ExecuteReader
代替DataAdapter
来填充DataSet
。
您收到致命错误,因为您在编写用于登录的插入查询(6-> @userid,@email,@passone,@passtwo,@lastname,@firstname
)和提供的参数(2-> @userid,@passone
)中期望的参数数量不同。
关于c# - 由于出现致命错误,WinForm不接受来自MySql的用户输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23399996/