SQL Server - Insert Record And Get New ID

By Robbe D. Morris

Printer Friendly Version

Robbe Morris
Robbe & Melisa Morris
Here's a small sample of how to use ADO and stored procedures to insert records into a table and receive the newly created id back for use in your page.


Sample Code
  
' Active Server Pages code. 
<%
  Dim msADOConStr 
  Dim moADOCon 
  Dim moADOCom 
  Dim msFName 
  Dim msLName 
  Dim msNewID 
  msADOConStr = "your connection string goes here" 
  msFName = "George W." 
  msLName = "Bush" 
Set moADOCon = Server.CreateObject("ADODB.Connection") 
Set moADOCom = Server.CreateObject("ADODB.Command") 
     moADOCon.CursorLocation = adUseClient 
     moADOCon.open msADOConStr 
  with moADOCom 
       .activeconnection = moADOCon 
       .commandtext = "sp_SaveRecord" 
       .commandtype = adCmdStoredProc 
       .Parameters.Append .CreateParameter("@RETURN_VALUE", adInteger, adParamReturnValue, 0) 
       .Parameters.Append .CreateParameter("@FName", adVarWChar, adParamInput, 40, msFName) 
       .Parameters.Append .CreateParameter("@LName", adVarWChar, adParamInput, 40, msLName) 
       .Parameters.Append .CreateParameter("@new_id", adInteger, adParamOutput, 0) 
   end with 
  moADOCom.Execute , , adExecuteNoRecords 
  if err.number = 0 then 
   Select Case  trim(moADOCom("@RETURN_VALUE")) 
          Case "0":   msNewID = trim(moADOCom("@new_id"))   
          Case Else:  ' received an error 
     End Select 
  else 
   response.write err.description 
  end if 
         On Error Resume Next 
         If moADOCon.STATE = adStateOpen Then moADOCon.Close 
         Set moADOCom = nothing 
         Set moADOCon = Nothing 
%>
' SQL Server stored procedure code starts here.   
CREATE PROCEDURE sp_SaveRecord 
( 
    @FName varchar(40), 
    @LName varchar(40), 
    @new_id int OUTPUT 
) 
AS 
  DECLARE @rc int 
   select @rc = 0 
   BEGIN TRANSACTION SaveRecord 
   insert into mytable (fname,lname) values (@FName,@LName) 
      if (@@ERROR <> 0)                 
          BEGIN 
             ROLLBACK TRANSACTION SaveRecord 
             select @rc = @@Error 
             Goto OnExit   
          END 
   select @new_id = @@identity 
   COMMIT TRANSACTION SaveRecord 
  OnExit: 
  RETURN @rc 
GO 

Robbe has been a Microsoft MVP in C# since 2004.  He is also the co-founder of NullSkull.com which provides .NET articles, book reviews, software reviews, and software download and purchase advice.