• ACCESS数据库插入数据后,返回当前的自动编号ID。


    @@IDENTITY (Transact-SQL)

    在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。 如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。 如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。——msdn

     

    Access数据库不能同时执行多条SQL语句,在INSERT一条数据后想返回当前数据的ID并不像SQL Server数据库那么简单,但是可以通过在执行一个OleDbCommand时,同时执行两条SQL语句,当然了要首先要启用事务。

    示例代码如下:

     1 using (OleDbConnection connection = new OleDbConnection(connectionString))
     2             {
     3                 connection.Open();
     4                 using (OleDbTransaction trans = connection.BeginTransaction())
     5                 {
     6                     OleDbCommand cmd = new OleDbCommand();
     7                     try
     8                     {
     9                         cmd.Connection = connection;
    10                         cmd.Transaction = trans;
    11                         cmd.CommandText ="INSERT INTO...";
    12                         cmd.ExecuteNonQuery();
    13                         cmd.CommandText = "SELECT @@INDENTITY as newID";
    14                         
    15                         int rowID = (Int32)cmd.ExecuteScalar();
    16                         trans.Commit();
    17                         return rowID;
    18                     }
    19                     catch (Exception E)
    20                     {
    21                         trans.Rollback();
    22                         connection.Close();
    23                         throw new Exception(E.Message);
    24                     }
    25 
    26                 }
    27 
    28             }

     这篇文章提到SCOPE_IDENTITY() 函数,具体没有尝试,感兴趣的朋友可以试一下。

  • 相关阅读:
    SpringCloud(四)GateWay网关
    C++中的间接宏函数
    一个C++引用库的头文件预编译陷阱
    谈谈C++中的数据对齐
    在C++中实现aligned_malloc
    WPF中的DesignerProperties
    在.NET 6中使用DateOnly和TimeOnly
    在 Ubuntu 上安装 .NET SDK 或 .NET 运行时
    Microsoft Build 2021第二天
    Microsoft Build 2021大会开始后,Develop Blog一系列更新
  • 原文地址:https://www.cnblogs.com/technote/p/2810503.html
Copyright © 2020-2023  润新知