Вам не нужен считыватель данных для операторов вставки, вы должны просто использовать ExecuteNonQuery
.
Обратите внимание, что ваши текущие запросы представляют собой угрозу безопасности, поскольку они уязвимы для атак SQL-инъекция .
Вместо объединения пользовательских входных данных в виде строк для создания операторов SQL используйте параметризованные запросы.
Для получения дополнительной информации читайте Как подготовленные операторы могут защитить от атак SQL-инъекций?
Улучшенная версия основных частей в вашем коде:
var insertDataInfo = @"INSERT INTO studentinfo (firstname,lastname,username,password,email) values
(@firstName, @lastName, @userName, @passwordHash, @email)";
var insertDataLogin = @"INSERT INTO logindb (username,password) values (@userName, @passwordHash)";
var datainfo = new MySqlCommand(insertDataInfo,con);
datainfo.Parameters.Add("@firstName", DbType.VarChar).Value = this.textBoxFirstName.Text;
datainfo.Parameters.Add("@lastName", DbType.VarChar).Value = this.textBoxLastName.Text;
datainfo.Parameters.Add("@userName", DbType.VarChar).Value = this.textBoxUsername.Text;
datainfo.Parameters.Add("@passwordHash", DbType.VarChar).Value = this.textBoxPassword.Text;
datainfo.Parameters.Add("@email", DbType.VarChar).Value = this.textBoxEmail.Text;
var datalogin = new MySqlCommand(insertDataLogin, con);
datalogin.Parameters.Add("@userName", DbType.VarChar).Value = this.textBoxUsername.Text;
datalogin.Parameters.Add("@passwordHash", DbType.VarChar).Value = this.textBoxPassword.Text;
datainfo.ExecuteNonQuery();
datalogin.ExecuteNonQuery();
Кроме того, вы храните пароли в виде простого текста в вашей базе данных.
Это действительно большая дыра в безопасности. Вместо этого вы должны хранить соленые хеш-значения ваших паролей - но этот ответ становится слишком широким для этого ответа, поэтому я оставлю эту часть для вас, чтобы вы могли ее прочитать и применить.