c#


C#/SQL get autoincremented field value


I have a table with autoincremented primary key. In my code I am trying to receive the new autoincremented value when I execute each 'insert' query. Is there a way to do it programatically?
Thanks.
UPD:
Assume I have a table:
TABLE User ( userID INT NOT NULL AUTO_INCREMENT, name VARCHAR( 25 ) NOT NULL , email VARCHAR( 50 ) NOT NULL , UNIQUE ( userID ) );
And I when I insert new values (name and email) to this table I want automatically receive newly generated userID. Ideally I am looking for any ways to do that with a single transaction and without stored procedures.
Have your sql/stored proc return scope_identity() or if you are using Linq2SQL or EF the entity used for insertion gets the new id.
In the stored proc it is:
ALTER proc [dbo].[SaveBuild](
#ID int = 0 output,
#Name varchar(150)=null,
#StageID int,
#Status char(1)=null
)
as
SET NOCOUNT ON
Insert into Builds
(name, StageID, status)
values (#Name, #StageID, #Status)
select #ID = scope_identity()
RETURN #ID
In the C# code you have:
public int SaveBuild(ref int id, ref string Name)
{
SqlCommand cmd = GetNewCmd("dbo.SaveBuild");
cmd.Parameters.Add("#ID", SqlDbType.Int).Value = id;
cmd.Parameters["#ID"].Direction = ParameterDirection.InputOutput;
cmd.Parameters.Add("#Name", SqlDbType.VarChar).Value = Name;
cmd.Parameters.Add("#StageID", SqlDbType.Int).Value = 0;
ExecuteNonQuery(cmd);
id = (int)cmd.Parameters["#ID"].Value;
return id;
}
Dependent upon your situation, you might be better off using table-valued parameters to pass your inserts to a stored procedure, then use OUTPUT INSERTED to return a table-valued parameter from your stored procedure.
It will drastically reduce the number of hits required if you're processing multiple items.
Are you limited to building SQL on the client and sending it to the server? Cause if you can use a stored procedure, this is easy to do. In the stored proc, do the insert and then, either
Select Scope_Identity() as the last statement in the stored proc., or
Use a output parameter to the stored proc, (say named #NewPKValue) and make the last statement:
Set #NewPKValue = Scope_Identity()
Otherwise, you need to send a batch of commands to the server that include two statements, the insert, and Select Scope_Identity() and execute the batch as though it was a select statement
You could use the SQL statement SELECT scope_identity().

Related Links

How to Update a column in Sqlite in Universal Windows Application
C# Trouble looping through elements in XML stream
Implementation of log4net which writes to SQL DB
Unable to locate cause of memory leak in Android app
Exception is calling web service method
Representing Complex objects in Entity Framework Core
How can I access node values
Chance of hitting the same function at the same time by two Threads/Tasks
Task.Run blocking main thread (frozen UI)
string name of variable(object) [duplicate]
Download shared document with OneDrive API
How To Deploy Third party software on Azure app service
IPartImportsSatisfiedNotification in UWP
Concatenate result of group by into string
C#: Does String.Length walk the buffer every time or is it just returning a stored value?
Two desktops running a windows form application shared on a network folder is slow and lags

Categories

HOME
oop
msbuild
model-view-controller
macros
abc
magento-1.9.2.1
sms
pip
ionic-native
minimax
websharper
xmlhttprequest
camunda
mbed
samba
jquery-easyui
include-path
screen-scraping
prepros
v4l2
bootstrap-accordion
apdu
deployment-descriptor
formtastic
r-factor
akamai
imdb
android-scrollview
ilog
cocoa-scripting
flex3
sdl-2
maven-2
rythm
stencyl
iterm2
latency
gem-fury
ape-phylo
rexx
mef
yank
xmldom
hdpi
enet
visualizer
nservicebus6
xamarin-test-cloud
aot
distcc
mavlink
syslog4j
git-cherry-pick
cherry-pick
php-java-bridge
laterjs
cexception
music-player
containstable
github-for-mac
webservices-client
gulp-cdnizer
log4cxx
cyberduck
sparkcore
tokudb
esb-toolkit-2.1
numerical-recipes
attiny
caption
system.io.packaging
vundle
pnunit
nest-initiative
hotlinking
traceur
infomaker
static-class
android-library
panelgrid
coinbase-php
gmail-imap
mmo
ncml
feincms
gssapi
report-viewer2010
derived-class
datasheet
project-files
copyfile
httppostedfilebase
parallel-python
openwrap
vectorwise
overlays
mismatch
sessiontracking
hwnd
designated-initializer
virtual-destructor
chars
subdirectories
activescaffold
google-local-search
table-valued-parameters
user-preferences
cons
urlscan

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App