Я стараюсь избегать использования простых запросов 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
%>
Код, который у меня есть, успешно вставляет запись, но я не могу понять, как получить поле идентификатора Recordset
для обновления после вставки. Как я могу получить значение столбца идентификаторов из этого Recordset
?
ОБНОВЛЕНИЕ - Вот решение с кодом выше.
Мне пришлось изменить тип курсора на adOpenKeyset
вместо adOpenForwardOnly
. После того, как я это сделал, запись автоматически обновляется новым значением поля «автоматический номер» после вставки. Однако это не , как вы думаете. Значение rs("id")
не становится целым числом или даже вариантом. Это становится своего рода Automation
типом и не может быть оценено как число. Также нельзя по какой-то причине использовать CInt () непосредственно для этого типа. Итак, что вы должны сделать, это преобразовать значение в строку, а затем преобразовать его в Int
. Вот как мне это удалось:
insertID = CInt( rs("id") & "" )
Спасибо Ди за ответ. Это очень помогло.