2015-07-26 3 views
-1

Я использовал этот код для удаления записей из таблицы MS Access Database. Программа работает успешно, но записи в базе данных не удаляются.Удаление записей в базе данных доступа ms

private void button3_Click_2(object sender, EventArgs e) 
    { 
     connection.Open(); 
     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connection; 
     String query=" delete from [student table] where Name="+txtname.Text+""; 
     command.CommandText= query; 
     MessageBox .Show ("Data deleted"); 
     connection.Close(); 

    } 
+2

1) Вы никогда не выполняет команду. 2) И вы хотите защитить от атак SQL-инъекций, никогда не добавляя вставляемые пользователем входы непосредственно в запрос. –

+0

У меня было что-то там об использовании «delete * from ...» в Access, но я не могу вспомнить, если это необязательно или требуется, и я не знаю, было ли оно изменено в последних версиях Access в любом случае, поэтому Я удалил его, но помните об этом. –

+1

Добавьте 'command.ExecuteNonQuery();' перед тем, как вы покажете сообщение. –

ответ

0

Следующий код должен работать:

using (var myConnection = new OleDbConnection(myConnectionString)) 
using (var myCommand = myConnection.CreateCommand()) 
{ 
    var nameParam = new OleDbParameter("@name", txtname.Text); 

    myCommand.CommandText = "DELETE FROM [student table] WHERE (Name) = @name"; 
    myCommand.Parameters.Add(nameParam); 

    myConnection.Open(); 
    myCommand.ExecuteNonQuery(); 
} 
Смежные вопросы