webForumDet fria alternativet

hämta senaste id

.NETur .NET

7 svar · 315 visningar · startad av renholm

Medlem sedan apr. 20012 266 inlägg
Frågan#1

hur får jag det id nummret jag just lagt till i MS SQL Server? jag kör med StoredProcedures och ASP.NET's SqlClient.

Medlem sedan apr. 20012 266 inlägg
#2

kör på detta sätt,

sist i StoredProcedure:

SELECT @@IDENTITY As lastID
GO

asp.net koden ser ut så här:

objConn.Open()
dim objReader As SqlDataReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection)
Response.Write(objReader.GetInt32(0))

error meddelandet lyder så här: skrev:

Server Error in '/' Application.
--------------------------------------------------------------------------------

Invalid attempt to read when no data is present.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present.

Medlem sedan apr. 20012 266 inlägg
#3

ingen som har någon lösning? är ganska bråttom detta.

Medlem sedan juni 20008 205 inlägg
#4

Om SQL Server agerar på samma sätt som MySQL i det här läget (vilket jag skulle tro, eftersom det är smart) så används inte just det senaste ID:t, utan det senaste ID:t som genererats av den anslutning man använder. Det verkar som om du inte gör någon insert?

Medlem sedan aug. 2001458 inlägg
#5

Bästa sättet att lösa ett problem är alltid att strippa bort all kod och få det enklast möjliga exemplet som visar när det går fel. Gör ett sådant och visa här. Varför gör du CommandBehavior.CloseConnection och inte bara ExecuteReader()?

Medlem sedan apr. 20012 266 inlägg
#6

jag skickade inte med hela storedprocedurn tänkte inte att INSERT delen var så intressant.

Varför gör du CommandBehavior.CloseConnection och inte bara ExecuteReader()?

för att stänga anslutningen

Medlem sedan aug. 2001458 inlägg
#7

Du hoppar aldrig till första posten i resultatet (med Read()), så din reader pekar inte på något record när du försöker accessa första kolumen i resultatet.

Medlem sedan apr. 20012 266 inlägg
#8

ok, ska testa igen på måndag, tackar

136 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)