Автор: EvgenLog (15.02.2007 в 23:40)
Есть таблица со след. структурой:
ID int
name varchar(200)
Полю ID автоматически присваиваются значения. Проблема в том, что если удалить строку из базы, то после добавления новой строки, ей присваивается новый идентификатор, причём новая строка не замещает старую (удалённую), а записывается как уникальная с уникальным, естественно, идентификатором. Т.о. если удалить несколько строк, а потом добавить, то таблица будет выглядеть след. образом:
ID name
1 str
2 str
3 str
7 str
8 str
9 str
12 str
Такая сетуация вызывает одну проблему....
Если при выполнении запроса
SqlCommand myCommand = new SqlCommand("DELETE FROM [dbo].[tblActKind_1] WHERE (([ID] = '" + DelStr + "'))", myConnection);
|
в переменной DelStr передавать значение индекса, выбранного в списке listBox (информация из базы выводится именно туда), то этот индекс не будет совпадать с тем, что поле имеет в базе, например:
Так таблица выглядит в базе данных:
ID name
1 str1
2 str2
3 str3
7 str4
8 str5
9 str6
12 str7
А вот так в списке listBox, точнее не таблица так выглядит, а так присваиваются идентификаторы полям:
ID name
0 str1
1 str2
2 str3
3 str4
4 str5
5 str6
6 str7
Т.е. по порядку.
Соответсвено, если я попытаюсь, используя указанный выше запрос, удалить строку с текстом str7, то ничего не выйдет, т.к. идентификатор передаваемый в переменной DelStr не будет совпадать с тем, который поле имеет на самом деле в таблице, точнее такого идентификатора вообще НЕТ в таблице БД.
Собсвенно вопрос:
Я вижу одн выход из этой сетуации. А именно: предварительно достать из базы реальный идентификатор выбранного в списке listBox поля и передать его в переменной DelStr.
А вот как это сделать? Не подскажете?
Спасибо.