【问题标题】:Finding the code of the last inserted record in SQL Server在 SQL Server 中查找最后插入记录的代码
【发布时间】:2020-06-27 00:54:21
【问题描述】:

我正在用 C# 开发一个系统,我必须在 2 个表中插入记录并且这些表是相互关联的。一个表称为Client,具有Cod_CliNome_Cli 列。第二个表是Phone,列有Cod_PhoneNum_Phone。由于客户可能有多个电话号码,我创建了一个关联表,名为 Cli_Phone,其中包含 (Cod_Cli, Cod_Phone) 列。

当我开发我的 C# 程序时,我启动了一个事务,以便我可以进行提交(或回滚,如果出现问题)。在表Phone中插入记录后,我必须得到这条记录的代码才能在表Cli_Phone中插入一条新记录。

我的问题是:如果我仍然没有提交结果,如何获取此代码?我不想使用程序。

我使用的是 SQL Server 2012。

【问题讨论】:

  • 一对多关系不需要查找表。
  • 你可以使用实体框架和DataContext。添加记录并提交更改后,会自动设置 ID。

标签: c# sql-server commit


【解决方案1】:

在 ADO.Net 中,您可以在插入查询中使用 OUTPUT,并在 ExecuteScalar 中使用获取 id。

using(SqlCommand cmd=new SqlCommand("INSERT INTO Your_table(column_1) output INSERTED.ID VALUES(@col1)",con))
    {
        cmd.Parameters.AddWithValue("@col1", "your_data");
        con.Open();

        int id =(int)cmd.ExecuteScalar();

        if (con.State == System.Data.ConnectionState.Open) 
            con.Close();

        return id;
    }

【讨论】:

  • 虽然在这个例子中是1:N的关系,但还有其他的表与表Phone相关。例如,表用户(Cod_User,Name_User)。同理,还有一个表 User_Phone。奥列格:我不知道该怎么做。 Chichiton:我怎么用这个?我不清楚。谢谢大家。
  • 显示与数据库一起使用的 C# 代码。这将有助于更详细地回答。
  • 我无法显示我的代码。该网站说它太长了。您对如何向您发送代码有什么建议吗?
  • 只需要保存数据库的方法。尝试删除不必要的细节。您使用什么框架/技术进行数据库访问?
  • 我认为它应该分为两部分。但我不得不删除很多代码
猜你喜欢
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多