3

Я не смог получить последнюю вставленной идентификатор из моего SQL Server 2000 БД с помощью типизированного набора данных в ASP.Netasp.net InsertCommand вернуть последнее вставить ID

Я создал TableAdapter и я галочкой " Refresh datatable "и" Generate Insert, Update and Delete statements ". Это автоматически генерирует методы Fill и GetData, а также операторы Insert, Update, Select и Delete.

Я попробовал все возможные решения в этой теме

http://forums.asp.net/t/990365.aspx

, но я до сих пор unsuccesfull, она всегда возвращает 1 (= число изменяемых строк). Я не хочу создавать отдельный метод вставки, поскольку автоматически созданная insertCommand отлично подходит для моих потребностей.

Как было предложено в приведенном выше тексте, я попытался обновить синтаксис InsertCommand SQL, чтобы добавить SELECT SCOPY_IDENTITY() или что-то подобное, я попытался добавить параметр типа ReturnValue, но все, что я получаю, - это число затронутых строк.

Есть ли у кого другое дело? Спасибо заранее! Stijn

ответ

0

я успешно нашел способ, чтобы получить добавочный идентификатор после вставки с помощью моей таблицы адаптера.

Мой подход немного отличается, я использую процедуру Store для вставки, поэтому моя команда вставки имеет все значения, но идентификатор, я заставил sp вернуть идентификатор, только что вызывающий: SET @ ID = SCOPE_IDENTITY() , а затем COMMIT TRAN и последняя строка будет RETURN @ID

Тогда я искал мои параметры адаптера таблицы для InsertCommand и установите @RETURNVALUE в колонке дополнительных ID таблицы, так что, когда он автоматически запускает возвращаемое значение в поле id.

Надеются, что это поможет

1

Я решил отказаться, я не могу больше тратить на это время. я использовать оператор Insert, после чего я делаю отборный MAX (ID) запрос hget вставного ID

Если кто-то есть решение, я буду рад прочитать здесь

Благодарности Стейн

+0

мы всегда используем индивидуальный –

+0

Что делать, если вы используете отдельный запрос вставки вместо автоматически генерируемого? –

+0

с использованием Max (id) - плохой подход, если многие пользователи вводят данные, будет возвращен неправильный идентификатор ... –

0

Чтобы обновить таблицу данных , необходимо обновить таблицу таблиц таблицы после операции обновления/вставки. Так вы можете это сделать.

  1. Открыть свойства TableAdapter -> По умолчанию Select Query -> Advnaced опции. и проверьте параметр Обновить таблицу данных. Сохраните адаптер сейчас. Теперь, когда вы вызываете обновление на table-adapter, таблица данных будет обновлена ​​[обновлена] после операции обновления/вставки и будет отображать последние значения из таблицы базы данных. , если для первичного ключа или любого coloumn установлено значение auto-increment, в таблице данных будет последнее обновление последнего значения.

  2. Теперь вы можете вызвать обновление как TableAdapterObj.Update (ds.dataTable);

  3. Ознакомьтесь с последними значениями из столбцов DataTable (ds.dataTable) и назначьте соответствующие значения в дочернюю таблицу перед обновлением/вставкой. Это будет работать именно так, как вы хотите.

alt text http://ruchitsurati.net/files/tds1.png

Смежные вопросы