2010-05-06 2 views
0

Voici quelques exemples de code qui insère un enregistrement dans une table db:Obtenez la valeur d'identité d'un insert via un appel de mise à jour du jeu de données .net

Dim ds As DataSet = New DataSet() 
da.Fill(ds, "Shippers") 

Dim RowDatos As DataRow 
RowDatos = ds.Tables("Shippers").NewRow 
RowDatos.Item("CompanyName") = "Serpost Peru" 
RowDatos.Item("Phone") = "(511) 555-5555" 
ds.Tables("Shippers").Rows.Add(RowDatos) 
Dim custCB As SqlCommandBuilder = New SqlCommandBuilder(da) 
da.Update(ds, "Shippers") 

Il insère une ligne dans le tableau Shippers, le ShippersID est a Valeur d'indentité. Ma question est comment puis-je récupérer la Valeur d'identité générée lorsque la nouvelle ligne est insérée dans la table Expéditeurs.

J'ai fait plusieurs recherches sur le Web et les sources que j'ai vues sur le net ne répondent pas de façon spécifique ou ne parlent pas des procédures stockées. Toute aide serait appréciée. Merci!

Répondre

0

Vous pouvez utiliser IDENT_CURRENT().

SELECT IDENT_CURRENT("Shippers") AS CurrentIdentityShippers; 
+0

très très mauvais choix IDENT_CURRENT donne la dernière identité insérée dans la table de toute connexion. Ce n'est pas l'idntité juste insérée par ce porcess! – HLGEM

1

Au lieu d'utiliser SqlCommandBuilder, vous pouvez appeler une procédure stockée pour effectuer l'insertion. Dans la procédure stockée, vous pouvez renvoyer la valeur IDENTITY en tant que paramètre OUTPUT.

Voir http://msdn.microsoft.com/en-us/library/ks9f57t0(VS.71).aspx pour un exemple.

+0

ou utilisez scope_Identity() si vous avez une ancienne version de SQL Server – HLGEM

Questions connexes