2013-08-23 4 views
-2

Мне нужно использовать ExecuteNonQuery в синтаксисе ниже? И они правильные? Цель использования da.DeleteCommand; какой синтаксис я получаю?ExecuteNonQuery с DeleteCommand?

MySqlCommand cmd = new MySqlCommand("DELETE FROM users_login WHERE UserID = @UserID;", coon); 
cmd.Parameters.Add("@UserID", MySqlDbType.Int16).Value = oUsuario.UserID; 

MySqlDataAdapter da = new MySqlDataAdapter(); 
da.DeleteCommand = cmd; 

coon.Open(); 
ok = true; 

/**OR use this**/ 

MySqlCommand cmd = new MySqlCommand("DELETE FROM users_login WHERE UserID = @UserID;", coon); 
cmd.Parameters.Add("@UserID", MySqlDbType.Int16).Value = oUsuario.UserID; 

coon.Open(); 
cmd.ExecuteNonQuery(); 
ok = true; 
+0

Вы спрашиваете, правильны ли эти команды. Вы их пробовали? Они работают? –

+0

ExecuteNonQuery должен сделать это и для удаления. Не уверен, что делает команда delete. – lloydom

+0

Если вы хотите выполнить запрос, немедленно используйте 'ExecuteNonQuery', если вы хотите изменить всю внутреннюю память в« DataTable/DataSet », прежде чем отправлять изменения в базу данных, используйте« DataAdapter ». –

ответ

2

Да, если вы выполнение ВЕИТ, ExecuteNonQuery() на вашем экземпляре MySqlCommand является то, что вы хотите использовать. Это также то, что вы будете использовать, если выполняете инструкцию INSERT или UPDATE или хранимую процедуру, которая не возвращает набор результатов.

+0

Выполнение 'da.DeleteCommand = cmd;'? Я получаю производительность или имеет тот же набор результатов? –

+0

DataAdapters предназначены для работы с DataSet. Если вы используете DataAdapter для заполнения, управления и публикации изменений в DataSet обратно в базу данных, тогда имеет смысл использовать свойство DeleteCommand в экземпляре DataAdapter. Если вы просто хотите выполнить произвольный оператор DELETE для базы данных, просто используйте ExecuteNonQuery в экземпляре Command. –

+0

Спасибо, вы решили часть проблемы, но мне нужно сейчас: и о производительности? –