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

Visual Studio 2017 c# console project does not provide namespace win32.registry
Face API in microsoft cognitive service
Delete Action methods of Web API did not get trigger
Debug .NET assembly with dnSpy
Object Containing a BindingList<SomeClass> displaying as System.Linq.OrderedEnumerable
How to find all types that used in specific type properties recursively in C# .NET Core?
How to display the result in another form?
how can i search or locate an address on google map using xamarin?
SHA256 Base64 Hash in Ruby
Running cmd programaticly only returns some outputs [duplicate]
.NET Print Area and PageBreak
How to attach a database to a setup
Messaging PlugIn (Carel Lotz) in Xamarin PCL?
how to change OrderBy direction of IQueryable
Faster alternative to SelectedOption to retrieve selected item on drop down menu?
VPN for concrete domains?

Categories

HOME
algolia
ftp
cors
windows-server-2008
dronekit
readdir
artifactory
msbi
sugarcrm
richtextbox
qt4
browserstack
genexus
google-search-appliance
captcha
aggregate
autologin
project-structure
gomobile
ajaxcontroltoolkit
screen-scraping
concatenation
dynamics-ax-2012-r3
pushpad
r-factor
vtd-xml
andengine
imdb
zimbra
angularjs-resource
geocomplete
sampling
wicket-tester
mtm
flume-ng
chrome-custom-tabs
synchronized
mef
automapper-4
noise
visio-2010
dynamic-linking
r-commander
timex
lightspeed
portaudio
papyrus
disconnect
geokit
jigsaw
qtruby
weblogic-maven-plugin
kik
3d-rendering
abstract
instabug
skscene
consul-template
dpkt
android-networking
data-representation
waterline
system.diagnostics
tidesdk
genome
nfa
beagleboard
connection-timeout
optimistic-locking
vundle
nsmutableurlrequest
disparity-mapping
triplestore
yandex-api
satisfiability
image-preloader
mixradio
mongoid4
autofilter
adabas
scidb
cab
dd4t
proj4
cocotron
cron4j
volatility
reflexil
win-prolog
project-files
mismatch
sipdroid
google-local-search
chromebug
p4.net
pitch-shifting
for-xml
appointment
lts
disk-based
asp.net-1.1

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