如果这个ID是自动递增的,当你新增完后运行一下"select max(ID) from table"就可以了.
如果不是自动递增,你新增记录时应该就有它的值了吧?

解决方案 »

  1.   

    那会不会出现某种情况,比如:新增一个记录后。在执行"select max(ID) from table"以前,另一个用户又已经向数据库新增了一个记录。那怎么办?
      

  2.   

    在存储过程中返回,用@@identity变量。
    Create procedure insertnew
    (@name nvarchar(20),
    @age smallint,
    @address nvarchar(80))
    as
    insert into users(name,age,address) values(@name,@age,@address)
    return @identity
    当然你的表中必须有自动增长标识字段存在。
      

  3.   

    System.Data.SqlClient.SqlConnection sqlConn=new System.Data.SqlClient.SqlConnection();
    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();
    }
      

  4.   

    用sql自带的@@identity可以返回添加的最后一条记录的index。
    这样不会出现同事插入时的同步问题。
      

  5.   

    例子:
    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
      

  6.   

    用PROCEDURE我就不多说了。
    如不用PROCEDURE 。你的插入数据的方法一定要同步,在这个同步函数里执行insert 并select max(ID) from table 且返回这个ID
      

  7.   

    同意 yohomonkey的。我这样用
    SELECT IDENT_CURRENT('table')
      

  8.   

    SqlTransaction trans = connection.BeginTrans();//1.Insert your record here with this transaction.//2.Run this sql "select @@identity from tablename" with SqlCommand.trans.commit();