У меня возникли проблемы с записью информации в мою базу данных. Я использовал метод, который я узнал из просмотра видео на Youtube, где мы сделали query string
и ввели все файлы INSERT INTO
, но я пытаюсь использовать новый способ, используя параметры, которые я прочитал, чтобы быть более безопасными и защищать от SQL-инъекций, которые я прочитали, чтобы быть плохим.Данные, не записываемые в базу данных MYSQL
Я использую следующий код: все работает нормально, нет ошибок, оно подключается к моему FTP-серверу и делает все это в порядке. Моя проблема заключается в том, что он не записывает какую-либо введенную пользовательскую информацию в базу данных MYSQL, как раньше, когда я использовал менее защищенный код.
Также, если тот, кто отвечает на этот вопрос, знает, как проверить, было ли имя пользователя уже взято в базе данных, пожалуйста, дайте мне знать, поэтому мне не нужно задавать отдельный вопрос. Я пытался что-то вроде
if(Reader.HasRows) MessageBox.Show("Username Taken");
, но я получил ошибку Use of unassigned local variable 'reader'
.
код я использую:
private void btnRegister_Click(object sender, EventArgs e)
{
MySqlDataReader reader;
int numerror = 0;
if (RUsernameTextBox.Text == "")
{
numerror = numerror + 1;
}
if (RPasswordTextBox.Text == "")
{
numerror = numerror + 1;
}
if (REmailTextBox.Text == "")
{
numerror = numerror + 1;
}
if (numerror == 1)
{
ErrorLabel.Text = "*1 required field is blank.";
}
else if (numerror == 2)
{
ErrorLabel.Text = "*2 required fields are blank";
}
else if (numerror == 3)
{
ErrorLabel.Text = "*3 required fields are blank";
}
else
{
if (reader.HasRows) CMessageBox("Error", "");
//add the user to the MySQL database
string HashedPassword = EncodePassword(RPasswordTextBox.Text);
string constring = "datasource=localhost;port=3306;username=Admin;password=**********";
using (MySqlConnection con = new MySqlConnection(constring))
{
MySqlCommand cmd = new MySqlCommand("INSERT INTO userinfo.users (username,password,email,premium,picture) VALUES (@username, @hashedpassword, @email , @premium , @picture);");
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Username", RUsernameTextBox.Text);
cmd.Parameters.AddWithValue("@hashedpassword", HashedPassword);
cmd.Parameters.AddWithValue("@email", REmailTextBox.Text);
cmd.Parameters.AddWithValue("@premium", "0");
cmd.Parameters.AddWithValue("@picture","ftp://***.***.*.**/Profile Pictures/" + RUsernameTextBox.Text + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png");
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MakeLoginVisible();
try
{
string TempFolder = Path.GetTempPath();
RProfilePicture.Image.Save(@"C:\temp\" + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png", System.Drawing.Imaging.ImageFormat.Png);
ftp ftpclient = new ftp(@"ftp://***.***.*.**/", "Admin", "**********");
ftpclient.createDirectory("Profile Pictures/" + RUsernameTextBox.Text);
ftpclient.upload("Profile Pictures/" + RUsernameTextBox.Text + "/" + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png", @"C:\temp\" + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png");
MakeLoginVisible();
CMessageBox("Success!", "AirSpace Account '" + RUsernameTextBox.Text + "' Created.");
ftpclient = null;
}
catch (Exception ex)
{
CMessageBox("Error", ex.Message.ToString());
}
}
catch (Exception ex)
{
CMessageBox("Error", ex.Message.ToString());
}
}
}
Тогда вы можете сказать нам, какие странная ошибка, которую вы получили, запустив код снова? «У меня есть какая-то странная ошибка, которую я не могу вспомнить» недостаточно. –
'У меня есть какая-то странная ошибка, о которой я не могу вспомнить' = не полезно – Steve
@ AndersLindén Извините за то, что не понял, ошибка, которую я получил, когда отладка была« Использование непризнанной локальной переменной «читатель» –