zoukankan      html  css  js  c++  java
  • 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() 函数,具体没有尝试,感兴趣的朋友可以试一下。

  • 相关阅读:
    新建一个类并绑定一个activity
    关于fragment保存变量的问题
    关于使用别人方法的效率问题
    使用asynctask的问题
    关于整个头像更新问题(2)
    关于查找所需代码的问题
    静态变量的使用问题
    关于更换头像的整个过程理解
    fill_parent 和 match_parent区别
    关于ui修改的若干想法
  • 原文地址:https://www.cnblogs.com/technote/p/2810503.html
Copyright © 2011-2022 走看看