【问题标题】:sqldatasource insert return identity valuesqldatasource 插入返回标识值
【发布时间】:2010-09-29 10:07:50
【问题描述】:

我正在使用 SqlDataSource sds = new SqlDataSource();在代码后面并使用 sds.Insert() 插入;请告诉我如何获取插入的记录主键值? 请注意我没有使用存储过程。

【问题讨论】:

    标签: .net insert return sqldatasource


    【解决方案1】:

    Last_Insert_ID();

    为您提供最后一个主键 id,您可以简单地将其附加到当前插入的末尾,键值将从您的插入中返回。

    这是一个 C# 示例:

    tring sqlIns = "INSERT INTO table (name, information, other) VALUES (@name, @information, @other)";
    db.Open();
    try
    {
     SqlCommand cmdIns = new SqlCommand(sqlIns, db.Connection);
     cmdIns.Parameters.Add("@name", info);
     cmdIns.Parameters.Add("@information", info1);
     cmdIns.Parameters.Add("@other", info2);
     cmdIns.ExecuteNonQuery();
    
     cmdIns.Parameters.Clear();
     cmdIns.CommandText = "SELECT @@IDENTITY";
    
    
     // Get the last inserted id.
    
     int insertID = Convert.ToInt32( cmdIns.ExecuteScalar() );
    
    
     cmdIns.Dispose();
     cmdIns = null;
    }
    catch(Exception ex)
    {
    throw new Exception(ex.ToString(), ex);
    }
    finally
    {
    db.Close();
    }
    

    我在 MSDN 上找到了这个:

    http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/91bd10ce-c83b-4766-920b-2137ddc29908

    【讨论】:

    • 我找不到 Lst_insert_ID();哪个对象有这个属性?
    【解决方案2】:

    我知道这是一个相当古老的帖子,但万一有人同时登陆这里......

    关于 Michael Eakins 的回答(见上文),使用 SCOPE_IDENTITY() 而不是 @@IDENTITY 更安全。

    根据 MSDN SCOPE_IDENTITY

    "... SCOPE_IDENTITY 返回仅插入到当前 范围; @@IDENTITY 不限于特定范围。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多