2017-02-06 10 views
-2

Я пытаюсь добавить некоторые значения в таблице tbllogs после входа в систему, но я получаю сообщение об ошибкеMySqlexception было необработанное, фатальная ошибка во время выполнения команды

Вот мой код

if (ctr == 1) 
{ 
    Data.con.Open(); 

    MetroMessageBox.Show(this, "Login Success!", "Welcome!", MessageBoxButtons.OK, MessageBoxIcon.Information); 

    MySqlDataAdapter da = new MySqlDataAdapter("Select * From dbinfo.tbluser where UserName = '" + txtUser.Text + "' and UserPassword = '" + txtPass.Text + "'", Data.con); 

    DataTable dt = new DataTable(); 
    da.Fill(dt); 

    Data.UserID = dt.Rows[0][0].ToString(); 
    Data.UserName = dt.Rows[0][1].ToString(); 
    Data.UserLevel = dt.Rows[0][3].ToString(); 

    string SaveStr = "Insert into dbinfo.tbllogs (LogsUser, LogsPassword) Values (@LogsUser, @LogsPassword)"; 

    MySqlCommand SaveCmd = new MySqlCommand(SaveStr, Data.con); 
    //SaveCmd.Parameters.AddWithValue("@LogsID", Data.UserID = dt.Rows[0][0].ToString()); 
    SaveCmd.Parameters.AddWithValue("@LogsName", txtUser.Text); 
    SaveCmd.Parameters.AddWithValue("@LogsPassword", txtPass.Text); 
    //SaveCmd.Parameters.AddWithValue("@LogsLevel", Data.UserLevel = dt.Rows[0][3].ToString()); 
    //SaveCmd.Parameters.AddWithValue("@LogsDateIN", timelabel.Text); 

    SaveCmd.ExecuteNonQuery(); 
    Data.con.Close(); 

    LoadData(); 

    Menu frmMenu = new Menu(); 
    frmMenu.Show(); 

    this.Hide(); 
} 

Я попытался изменить линию

SaveCmd.Parameters.AddWithValue("@LogsName", txtUser.Text); 

в

SaveCmd.Parameters.AddWithValue("@LogsName", Data.Password = dt.Rows[0][2].ToString())); 

но это тоже не сработало.

Я предоставлю больше кода, если этого недостаточно, спасибо заранее!

+2

Внутреннее исключение обычно дает больше информации. Вы никогда не должны хранить пароли как обычный текст. Почему пароль регистрируется в любом случае? – Plutonix

+3

? Команда ожидает параметр, называемый ** LogsUser' **. И вы не должны хранить пароли в виде обычного текста. – stuartd

+0

выполните поиск в Google и прочитайте, как его использовать, а также создайте «Параметризированные запросы», также прочитайте, как использовать конструкцию 'using() {}' – MethodMan

ответ

1

Изменить эту строку:

SaveCmd.Parameters.AddWithValue("@LogsName", txtUser.Text); 

В это:

SaveCmd.Parameters.AddWithValue("@LogsUser", txtUser.Text); 

Кроме того, как уже упоминалось, вы не должны войти в пароль как обычный текст.

+0

geez, я этого не заметил, но спасибо! – sakusa1

-1

имя параметра должно быть одинаковым в sql-запросе и параметре C#

Смежные вопросы