Я создаю инструмент C#, который подключается к базе данных SQL для управления пользователями для другой программы, которую я создал. Я показываю Пользователей в ListBox
, и я могу добавлять/удалять пользователей. После того, как я удалил некоторые профили, все стало странно, и я подумал, что это может иметь какое-то отношение к тому, как я удаляю строку из базы данных. Я использую Id, который автоматически увеличивается с каждым новым созданием пользователя. Это мой код для удаления из базы данных:Удалить строку SQL и изменить ID
using (conn = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand("DELETE FROM myDatabase WHERE Id = '" + (listBox1.SelectedIndex + 1) + "'", conn))
{
conn.Open();
command.ExecuteNonQuery();
}
и это, как я загружаю пользователь в мой ListBox:
using (conn = new SqlConnection(connectionString))
using (SqlDataAdapter sqlAdapt = new SqlDataAdapter("SELECT * FROM myDatabase", conn))
{
DataTable dataTable = new DataTable();
sqlAdapt.Fill(dataTable);
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
listBox1.DataSource = dataTable;
}
Как я могу удалить правильную строку из базы данных?
Вы должны использовать SelectedValue вместо SelectedIndex. Тем не менее, для меня все еще неясно, какова ваша проблема. Что такое «странное» для списка? – Kinetic
сколько идентификаторов находится в списке ..? и как вы можете ожидать, что он удалит все ID, если в базе данных имеется более одного уникального идентификатора?? вы подумали об обертывании кода вокруг цикла foreach, а также переформатировании инструкции Delete для использования правильных параметризованных значений для запроса ..? и сохраните SelectedValue в переменной, не говоря уже о том, что вам не нужно '('обернуто вокруг вашего объекта listBox'. Узнайте, как построить параметризованный запрос .. или создайте хранимую процедуру и правильно передайте значения. – MethodMan
Пожалуйста, подумайте об использовании LINQ2SQL или EF Нет, это не решение вашей проблемы - вот почему это комментарий. – SQLMason