![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
MasterOfCode |
|
|||
![]() elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
Как при вставке в таблицу БД узнать сгенерированный ID поля?
Юзаю SQLCommand. -------------------- ![]() |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 5 Всего: 40 |
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
MasterOfCode |
|
|||
![]() elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
Спасибо!
-------------------- ![]() |
|||
|
||||
vretsky |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 29.10.2007 Репутация: нет Всего: нет |
да только SCOPE_IDENTITY(), @@IDENTITY,IDENT_CURRENT()
не возвращают uniqueidentifier, очень жаль... |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 5 Всего: 40 |
vretsky, что мешает задать значение Id для uniqueidentifier прямо к коде, например в конструкторе класса и вставлять его в БД?
но если есть стремление к мазохизму, можно сделать так:
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
1stain, думаю, если уж извращаться подобным образом, то нужно использовать не NewId, а NewSequantialId() (доступен с Sql Server 2005). Тогда индексы на базе Guid'ов будут практически равносильны индексам на базе int'ов.
|
|||
|
||||
vretsky |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 29.10.2007 Репутация: нет Всего: нет |
можно брать еще например из inserted
Добавлено через 59 секунд ![]() |
|||
|
||||
MasterOfCode |
|
||||
![]() elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
не сработал че то. Выдал ошибку: The variable name '@IdParam' has already been declared. Variable names must be unique within a query batch or stored procedure. че то я не чего не понимаю... Где я ее объявлял, не пойму... Добавлено через 1 минуту и 50 секунд Сорри.... ![]() не брать во внимание предидущее сообщение. -------------------- ![]() |
||||
|
|||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Назрел вопрос по этой теме.
И все же... наверное многие используют autoincrement поля для идентификаторов. И вот если представить ситуацию, что в отсоединенном DataSet в какой то из таблиц добавилось несколько строк данных, или даже одна. Я вызываю метод Update адаптера (использую типизированные адаптеры и DataSet сгенеренные студией.. но думаю непринципиально), который в свою очередь вызывает команды INSERT СУБД. INSERT благополучно проходит, сколько то строк обновляется, но в отсоединенном DataSet никаких изменений поля автоинкремента не происходит. По идее только СУБД знает какое оно для каждой из строк. И как в таком случае мне обновить поля автоинкремента для отсоединенной сущности (DataSet или DataTable)? Вычитать только те строки которые я вставил??? Но как я вычитаю именно их? Уникального идентификатора то я их не знаю. Вычитать все из БД? Но это бред ибо ради обновления 2-3 строк вычитывать 1000 не хочется. Как быть? |
|||
|
||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Что-то тут вымер форум...
|
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 5 Всего: 40 |
jorikdima, как ни прискорбно, но придется поработать руками:
создаешь хранимую процедуру с OUTPUT параметром ID как описано выше, ставишь ее для InsertCommand в TableAdapter, руками прописываешь параметры и т.д. вобщем смотри аттачмент Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Спасибо за ответ! Но хранимая процедура не катит, у меня MSSQL Compact Edition а там их нету :( ОК ну тогда буду обновлять базу каждый раз ![]() |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 5 Всего: 40 |
Меняешь тип InsertCommand у TableAdapter'a на Text, в конструктор формы пишешь
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |