2016-10-19 3 views
0

This is the imageСинтаксическая ошибка в UPDATE заявление (базы данных MS Access)

private void button1_Click(object sender, EventArgs e) 
{ 
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "") 
    { 
     MessageBox.Show("Please Complete all Field"); 
    } 
    else 
    { 
     if ((textBox3.Text == textBox4.Text) && (textBox5.Text == textBox6.Text)) 
     { 
      connect.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connect; 
      command.CommandText = "update Table2 set username ='" + textBox2.Text + "', password ='" + textBox6.Text + "' where AID='" + aid + "'"; 
      command.ExecuteNonQuery(); 
      MessageBox.Show("Admin account update complete!"); 
      connect.Close(); 
     } 
     else 
     { 
      MessageBox.Show("Field dont match each other!"); 
     } 
    } 
} 
private void button2_Click(object sender, EventArgs e) 
{ 
    if (textBox7.Text == "" || textBox8.Text == "" || textBox9.Text == "") 
    { 
     MessageBox.Show("Please Complete all Field"); 
    } 
    else 
    { 
     if (textBox8.Text == textBox9.Text) 
     { 
      connect.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connect; 
      command.CommandText = "insert into Table2 (username,password) values('" + textBox7.Text + "','" + textBox9.Text + "')"; 
      command.ExecuteNonQuery(); 
      MessageBox.Show("Admin account add complete!"); 
      connect.Close(); 
      textBox7.Text = ""; 
      textBox8.Text = ""; 
      textBox9.Text = ""; 
     } 
    } 
} 

Я получаю ошибку синтаксиса в UPDATE постановке на command.ExecuteNonQuery(); на обе кнопки. Я уже создал новую таблицу в моей базе данных, но все тот же. Также проверьте орфографию и все хорошее.

ответ

1

использовать параметризованные запросы, и вы не будете иметь эту проблему. Также вы будете защищены от SqlInjection.

command.CommandText = @"update Table2 set [email protected], [email protected] where [email protected]"; 

command.Parameters.AddWithValue("@UserName", textBox2.Text); 
command.Parameters.AddWithValue("@Password", textBox6.Text); 
command.Parameters.AddWithValue("@ID", aid); 

Здесь второй CommandText

command.CommandText = @"insert into Table2 (username,password) Values (@UserName,@Password)"; 

command.Parameters.AddWithValue(@UserName, textBox7.Text); 
command.Parameters.AddWithValue(@Password, textBox9.Text); 

параметры должны быть в том же порядке, как вы пишете их в запросе для OleDb. Также вы не должны беспокоиться о ', когда используете параметры, ваши запросы выглядят лучше и легко читаются. Напиши названия текстовых полей, в будущем это будет понятнее для других пользователей.

+0

По-прежнему такая же ошибка. спасибо за ответ btw –

+0

@RalphIgnacio вы должны сделать это для всех ваших запросов, это имя таблицы Table2? – mybirthname

+0

Теперь все работает, проблема в MS Access, я создал новый столбец в той же таблице и просто передал данные. Спасибо :) –

0

Проверьте свой интервал команды после username и password

command.CommandText = "update Table2 set username='" + textBox2.Text + "', password='" + textBox6.Text + "' where AID='" + aid + "'"; 
+0

ive попробовал, все еще получил ту же ошибку –

+0

@RalphIgnacio cross check table имя, имена столбцов и текст ввода текста – Mostafiz

+0

Теперь все работает, я создал новый столбец в одной таблице и передал данные и их работу сейчас. Спасибо :) –

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