2011-01-28 3 views
0
 // Add into DB 
     int recordID = 0; 
     using (tblArtworkTemplatesTableAdapter tblAdapter = new tblArtworkTemplatesTableAdapter()) 
     { 
      tblAdapter.Insert(DateTime.Now, int.Parse(lstChooseSpec.SelectedValue), Master.loginData.loggedInUser.ID); 
      recordID = int.Parse(tblAdapter.GetLastID().ToString()); 
     } 

     // Redirect 
     Response.Redirect("artworkDesigner.aspx?ID=" + recordID); 

La procédure stockée qu'il appelle est:ASP.net DAL obtenir ID d'enregistrement juste inséré

set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[GetLastID] 
AS 
    SET NOCOUNT ON; 
select @@identity FROM tblArtworkTemplates 

Je ne peux pas sembler le faire fonctionner, je suis un newb avec ce genre de choses DAL toute aide appréciée!

+2

Vous souhaitez probablement utiliser SCOPE_IDENTITY à la place. Voici plus d'informations: http://msdn.microsoft.com/en-us/library/ms190315.aspx –

+2

Ceci est l'un de ces commentaires que vous avez vraiment besoin d'une macro sur StackOverflow, comme "utiliser JQuery", mais vous devez jetez un oeil à Entity Framework ... il fait beaucoup de tout ce type de code de câblage en fumée. J'ai fait ce gâchis pendant des années, et je ne reviendrai jamais. Si vous n'aimez pas EF, consultez NHibernate. –

+0

... ou même tout simplement ancien LINQ to SQL. –

Répondre

1

Je devine que c'est SQL Server? Vous devez renvoyer l'ID de l'enregistrement nouvellement inséré à partir de votre procédure stockée INSERT INTO. Pour en savoir plus sur @@Identity voir @@IDENTITY (Transact-SQL)

Retourne l'ID de l'enregistrement nouvellement inséré de votre procédure stockée:

SELECT ID AS LastID FROM tblArtworkTemplates WHERE ID = @@Identity; 

Fore plus sur le sujet, voir How To Get Last Inserted ID On SQL Server.

+1

En fait, si possible, utilisez 'SCOPE_IDENTITY()' au lieu de @@ IDENTITY .... –

+0

@ marc_s Bon point depuis @@ L'identité n'est pas limitée à une portée spécifique. Merci pour votre contribution. – DaveB

Questions connexes