例子: CREATE PROCEDURE EmailSend_InsertNewEmail @PersonID int, @idSender varchar(50), @idReceiver varchar(50), @CopyTo varchar(250), @SecretCopyTo varchar(250), @Subject varchar(50), @MailContents text, @BelongToDOC int, @EmailType int, @count int output AS --PersonID,idSender,idReceiver,CopyTo,SecretCopyTo,Subject,MailContents,BelongToDOC,EmailType insert mails (PersonID,idSender,idReceiver,CopyTo,SecretCopyTo,Subject,MailContents,BelongToDOC,EmailType) values(@PersonID,@idSender,@idReceiver,@CopyTo,@SecretCopyTo,@Subject,@MailContents,@BelongToDOC,@EmailType) set @count=@@identity GO
用PROCEDURE我就不多说了。 如不用PROCEDURE 。你的插入数据的方法一定要同步,在这个同步函数里执行insert 并select max(ID) from table 且返回这个ID
同意 yohomonkey的。我这样用 SELECT IDENT_CURRENT('table')
SqlTransaction trans = connection.BeginTrans();//1.Insert your record here with this transaction.//2.Run this sql "select @@identity from tablename" with SqlCommand.trans.commit();
Create procedure insertnew
(@name nvarchar(20),
@age smallint,
@address nvarchar(80))
as
insert into users(name,age,address) values(@name,@age,@address)
return @identity
当然你的表中必须有自动增长标识字段存在。
System.Data.SqlClient.SqlCommand sqlCmd=new System.Data.SqlClient.SqlCommand();
sqlConn.ConnectionString=System.Configuration.ConfigurationSettings.AppSettings["SqlConn"];try{
sqlConn.Open();
try{
sqlCmd.Connection=sqlConn;
sqlCmd.CommandType=System.Data.CommandType.Text;
sqlCmd.CommandText="insert into TLastID(FCount) select Count(FID) from TLastID;set @ID=@@identity";
sqlCmd.Parameters.Add("@ID",System.Data.SqlDbType.Int);
sqlCmd.Parameters["@ID"].Direction=System.Data.ParameterDirection.Output;
sqlCmd.ExecuteNonQuery();
this.Lab_Message.Text+="<br>NEWID:"+sqlCmd.Parameters["@id"].Value.ToString();
finally{
sqlConn.Close();
}
}
catch(System.Exception excep){
this.Lab_Message.Text+=excep.Message;
}
finally{
sqlCmd.Dispose();
sqlConn.Dispose();
}
这样不会出现同事插入时的同步问题。
CREATE PROCEDURE EmailSend_InsertNewEmail
@PersonID int,
@idSender varchar(50),
@idReceiver varchar(50),
@CopyTo varchar(250),
@SecretCopyTo varchar(250),
@Subject varchar(50),
@MailContents text,
@BelongToDOC int,
@EmailType int,
@count int output
AS
--PersonID,idSender,idReceiver,CopyTo,SecretCopyTo,Subject,MailContents,BelongToDOC,EmailType
insert mails (PersonID,idSender,idReceiver,CopyTo,SecretCopyTo,Subject,MailContents,BelongToDOC,EmailType)
values(@PersonID,@idSender,@idReceiver,@CopyTo,@SecretCopyTo,@Subject,@MailContents,@BelongToDOC,@EmailType)
set @count=@@identity
GO
如不用PROCEDURE 。你的插入数据的方法一定要同步,在这个同步函数里执行insert 并select max(ID) from table 且返回这个ID
SELECT IDENT_CURRENT('table')