i looking insert row table , return identity column in c# code. cannot seem syntax quite right.
here storted procedure
alter procedure [dbo].[sp_insertissue] @application nchar(20) = null , @version nchar(10) = null , @createdby nvarchar(30) = null , @assignedto nvarchar(max) = null , @description nvarchar(max) = null , @userid int begin set nocount on insert dbo.issue ( application , version , createdby , assignedto , description , userid ) values ( @application , @version , @createdby , @assignedto , @description , @userid ) return scope_identity() end
here c# code
sqlcommand cmd = new sqlcommand();
cmd.commandtext = "sp_insertissue "; cmd.commandtype = system.data.commandtype.storedprocedure; cmd.connection = m_connection; sqlparameter parm = new sqlparameter("@issueid", sqldbtype.int); parm.direction = parameterdirection.returnvalue; cmd.parameters.add("@application", sqldbtype.varchar).value = p_application; cmd.parameters.add("@version", sqldbtype.varchar).value = p_version; cmd.parameters.add("@createdby", sqldbtype.varchar).value = p_createdby; cmd.parameters.add("@assignedto", sqldbtype.varchar).value = p_assignedto; cmd.parameters.add("@description", sqldbtype.varchar).value = p_description; cmd.parameters.add("@userid", sqldbtype.int).value = p_userid; var returnparameter = cmd.parameters.add("issueid", sqldbtype.int); returnparameter.direction = parameterdirection.returnvalue; /// send data db int32 id = (int)cmd.executenonquery();
return -1 not identity column
you have make changes :
- select scope_identity() beter return scope_identity()
- in code have change cmd.executenonquery() int id = convert.toint32(cmd.executescalar());
Comments
Post a Comment