![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
Создаю запись с помощью SqlConnection, SqlCommand, SQL = "INSERT INTO...."
А как узнать то какой ID у записи то ![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 5 Всего: 93 |
Легко
![]()
Ну и дальше вызывай ExecuteScalar() для твоего SqlCommand. -------------------- Да. Именно так. |
|||
|
||||
Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 1 Всего: 73 |
Дрон, а это для какой БД?
-------------------- Теперь при чем :P |
|||
|
||||
DemoCode |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 890 Регистрация: 20.10.2005 Где: Россия Репутация: нет Всего: 41 |
Какая БД?
Можно так:
-------------------- Жить стало лучше, жить стало веселей © И.В. Сталин |
|||
|
||||
Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 1 Всего: 73 |
Так нельзя. Не факт, что максимальный ИД будет последним. -------------------- Теперь при чем :P |
|||
|
||||
Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
Дрон, спасибо за подсказку..
Прочитал про ExecuteScalar. Осталось не понятным SELECT SCOPE_IDENTITY(). Это для чего?(Что это?) |
|||
|
||||
DemoCode |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 890 Регистрация: 20.10.2005 Где: Россия Репутация: нет Всего: 41 |
Чаще всего записи добавляются с ID равным NULL, поэтому максимальный ID будет последним. Но если известно, что в приложении записи добавляются с ID отличным от NULL, тогда да нельзя, а если нет - то этот способо будет универсальным для любой БД. -------------------- Жить стало лучше, жить стало веселей © И.В. Сталин |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 5 Всего: 93 |
Пользуемся поиском ![]() http://forum.vingrad.ru/index.php?showtopic=96271 А в двух словах именно этим запросом мы и получаем последний сгенерированный ID-шник ![]() ExecuteScalar нужен только для того, чтобы иметь возможность вернуть его тебе. Обычно ведь INSERT выполняется методом ExecuteNonQuery. Можно, конечно, ещё возвращать через output параметр и часто так и приходится делать, но в простом случае сойдёт и ExecuteScalar. Поскльку вопрос про SqlCommand -- то и сервер будет MS SQL Server ![]() Это сообщение отредактировал(а) Дрон - 11.7.2006, 18:17 -------------------- Да. Именно так. |
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 4 Всего: 16 |
Если применяешь MSSQL лучше в качестве ID-шника брать тип UNIQUEIDENTIFIER. Имхо удобней. А там и хранимку написать не проблема.
-------------------- Разочарованный в .NET |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 5 Всего: 93 |
Softaz, да ну?!?! Где ты такое нашёл?
Во-первых, если это будет Primary Key, то при каждом инсерте будет переколбашиваться вся таблица, т.к. новый гуид не обязательно больше предыдущего. Во-вторых, guid занимает больше места в памяти и его сравнение сложнее, следовательно join с такой таблицей будет работать медленее. В-третьих, зачем изобретать велосипед, если есть нормальные identity поля и нормальная функция SCOPE_IDENTITY()? Это сообщение отредактировал(а) Дрон - 13.7.2006, 08:47 -------------------- Да. Именно так. |
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 4 Всего: 16 |
Обходится быстро и легко. Индекс строится по ключевому полю, т.е. по Guid, а он длиннее. Следовательно, ДПС будет больше работать. Память здесь ни при чем. Ага. Только заметно это будет где-то с миллиона записей. А если идет выборка из 20 таблиц с 10 млрд. строк из пары БД. Бедный int ![]() Он изобретен M$, значит, оным не является. Все же уникальность в 2^64 неплохая. И в DataSet можно спокойно его записать, не боясь, что на сервере уже есть такой и возникнет исключение. И синхронизация с репликацией проще. -------------------- Разочарованный в .NET |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 5 Всего: 93 |
С этим согласен. Ну, и естественно 32-битного int на долго тоже не хватит ![]() Но использование гуида для обычных таблиц -- это, на мой взгляд, редкостное извращение. -------------------- Да. Именно так. |
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 4 Всего: 16 |
Да. Для хранения настроек программы типа "последние файлы" - это очень редкостное извращение ![]() -------------------- Разочарованный в .NET |
|||
|
||||
Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
Всем спасибо.
|
|||
|
||||
starostin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 28.9.2009 Где: Ярославль Репутация: нет Всего: 1 |
а как быть если субд firebird?
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |