Форум: Форум C++Разное
Новые темы: 00
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получение идентификатора поля.
 
 автор: 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.
А вот как это сделать? Не подскажете?
Спасибо.

  Ответить  
 
 автор: cheops   (16.02.2007 в 00:50)   письмо автору
 
   для: EvgenLog   (15.02.2007 в 23:40)
 

Перестравивать индекс выпадающего списка... т.е. обновлять содержимое формы при удалении или посылать соответствующее событие форме.

  Ответить  
 
 автор: EvgenLog   (16.02.2007 в 03:16)   письмо автору
 
   для: cheops   (16.02.2007 в 00:50)
 

Дак вот думаю не поможет. Т.к. список на форме ставит индексы сам по себе, а база сама по себе. Если я обновлю форму, то в базе ничего не измениться. Или я не прав? И ещё. кстати, как получить текст выбранной строки в этом списке?! никак не могу! SelectedItem не выводит ничего.

  Ответить  
 
 автор: cheops   (16.02.2007 в 13:46)   письмо автору
 
   для: EvgenLog   (16.02.2007 в 03:16)
 

Это в Visual Studio? Дело в том, что существует два способа обновления формы при помощи метода UpdateData(), если передать этому методу в качестве аргумента TRUE, то данные из элементов управления формы помещаются в связанные переменные, а FALSE - наоборот обновляет элементы управления в соответствии со значениями связанных переменных.

  Ответить  
 
 автор: EvgenLog   (18.02.2007 в 14:45)   письмо автору
 
   для: cheops   (16.02.2007 в 13:46)
 

Мда, что-то я не понял, если эту функцию вызвать в целях обновления данных на форме в соответсвии данными из БД, то она тоже будет работать? Интересно.

  Ответить  
 
 автор: cheops   (18.02.2007 в 15:18)   письмо автору
 
   для: EvgenLog   (18.02.2007 в 14:45)
 

Она обновляет не базу данных, а связанные с элементами управления переменные, при помощи которых необходимо обновлять базу данных.

  Ответить  
 
 автор: EvgenLog   (18.02.2007 в 18:50)   письмо автору
 
   для: cheops   (18.02.2007 в 15:18)
 

А... Вот в чём фишка! Ясно. Вобщем-то я эту проблему уже решил другими способами. Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования