2015-08-05 3 views
2

У меня есть список с именами пользователей и кнопка удаления. Я хочу, чтобы выбранный пользователь (со всеми введенными данными, связанными с этим пользователем) удалялся при нажатии кнопки удаления.Как удалить одну запись из таблицы

Мой код

SqlConnection con = new SqlConnection("Data Source=JAMES-PC\\SQLEXPRESS;Initial Catalog=staff;Integrated Security=True"); 
con.Open(); 

string sql = @"DELETE FROM staff1;"; 
SqlCommand cmd = new SqlCommand(sql, con); 
cmd.ExecuteNonQuery(); 
con.Close(); 

этот код удаляет всю таблицу.

Как я могу удалить выбранного пользователя?

ответ

2

Для выбора нужной записи вам нужно предложение WHERE. Вы должны удалить имя пользователя выбранного пользователя и передать его параметру @UserName.

var userName = (listBox.SelectedItem as DataRowView)["UserName"].ToString(); 
string sql = @"DELETE FROM staff1 WHERE Username = @UserName;"; 

SqlCommand cmd = new SqlCommand(sql, con); 
cmd.Parameters.AddWithValue("@UserName",useName); 

cmd.ExecuteNonQuery(); 
con.Close(); 

См this thread о том, как использовать параметры в SQL.

+0

Удалить из персонала1 ГДЕ Имя пользователя = @ UserName, если я использую это то, что я должен ввести в @ имя пользователя? имя столбца? – jamesmc1535

+0

@ jamesmc1535: Смотрите мое обновление. Вы должны удалить имя пользователя выбранного пользователя и передать его в параметр UserName. – CharithJ

+0

спасибо человеку, поэтому я скопировал обновленный> извините, если я задаю глупые вопросы, я ненавижу соединения sql, это меня смущает, lol anyways в списке имя таблицы (имя), поэтому я заменяю @UserName на имя ? и если я это сделаю, я продолжаю получать ошибку в отношении ссылки debug/object, не установленной в экземпляр объекта – jamesmc1535

1

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

На основе комментариев рабочий процесс должен быть что-то вроде: вы нажимаете на кнопку удаления, вы отправляете имя персонала вы хотите удалить команду, которая выглядит как:

string sql = @"DELETE FROM staff1 where [email protected];"; 

SqlCommand cmd = new SqlCommand(sql, con); 
cmd.Parameters.AddWithValue("@Name","NameReceivedFromList"); 

cmd.ExecuteNonQuery(); 
con.Close(); 
+0

Я использовал этот, но тогда он ничего не делает, поэтому я думаю, что я сделал что-то неправильно string sql = @ "УДАЛИТЬ из staff1, где Id = @ Id;"; <, к чему я должен сменить идентификатор? имя столбца – jamesmc1535

+0

Вы можете изменить идентификатор с столбцом, в котором вы хотите удалить (предпочтительный уникальный столбец, чтобы избежать удаления большего количества строк). – Zippy

+0

'SqlConnection con = new SqlConnection («Источник данных = JAMES-PC \\ SQLEXPRESS; Начальный каталог = персонал; Integrated Security = True»); con.Open(); строка sql = @ "УДАЛИТЬ ОТ персонала1, где Id = @ name;"; SqlCommand cmd = новый SqlCommand (sql, con); cmd.Parameters.AddWithValue ("@ name", 1); cmd.ExecuteNonQuery(); con.Close(); ' } сделал это, но когда я нажимаю кнопку, ничего не происходит, поэтому я мог бы сделать что-то не так: извините, я не знаю, как опубликовать код, поэтому его в собственном квадратном веществе – jamesmc1535

0

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

следующий запрос удаляет только один элемент

DELETE FROM Table WHERE Table.PrimaryField = Value 

Следующий запрос удалит все элементы, который соответствует

DELETE FROM Table WHERE Table.Field = Value 

Вы также можете иметь присоединиться к вашему ВЕЬЕТЕ для более сложных на удаление запросов

DELETE A FROM Table A 
INNER JOIN TableB B ON A.Key = B.Key 
WHERE B.PrimaryField = Value 
Смежные вопросы