Как получить идентификатор вставки из этого ADODB.Recordset?

Я стараюсь избегать использования прямых SQL-запросов в своем веб-приложении. Я огляделся и пришел к выводу, что ADO Recordset s будет лучшим или, по крайней мере, самым безопасным инструментом для работы. Мне нужно вставить записи в таблицу базы данных. К сожалению, я не понимаю, как получить значение идентификатора для только что вставленной записи. Вот сокращение того, что у меня есть сейчас:

<%
dim insertID, rs
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "my_table_name", conn, adOpenForwardOnly, adLockOptimistic

rs.AddNew()

Call m_map_values_to_rs(rs)

rs.Update()

insertID = rs("id")

rs.Close()
rs = Nothing
%>

Код, который у меня есть, успешно вставляет запись, но я всю жизнь не могу понять, как получить поле id набора Recordset для обновления после вставки. Как я могу получить значение столбца идентификаторов обратно из этого Recordset ?

ОБНОВЛЕНИЕ - Вот решение относительно приведенного выше кода.

Мне пришлось изменить тип курсора на ] adOpenKeyset вместо adOpenForwardOnly . После того, как я это сделал, запись автоматически обновляется новым значением поля "автоматический номер" после вставки. Однако это не то, что вы думаете. Значение rs ("id") не становится целым числом или даже вариантом. Он становится своего рода автоматом и не может быть оценен как число. Также по какой-то причине нельзя использовать CInt () непосредственно для этого типа. Итак, что вы должны сделать, так это преобразовать значение в строку, а затем преобразовать ее в Int . Вот как мне это удалось:

insertID = CInt( rs("id") & "" )

Спасибо Ди за их ответ. Это очень помогло.

9
задан sholsinger 4 April 2011 в 13:46
поделиться