• Access中的SELECT @@IDENTITY


       在Access数据库中存在select @@identity吗?答案是肯定的。但是Access一次只能执行一条SQL,多条SQL需要多次执行,这是限制。在SQL Server中,可以一次执行多条SQL语句。Access使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大。

       但是Access中可以连续执行N条语句,象下面这样:
       cmd.CommandText = "INSERT INTO MyTable (N1,N2) VALUES (22,11)";
       int count = cmd.ExecuteNonQuery();
       cmd.CommandText = "SELECT @@IDENTITY";
       int newId = (int)cmd.ExecuteScalar();

       其中SELECT @@IDENTITY是取出前一条语句的自动编号的关键字。

    在Sql Server中可以用ExecuteReader()来同时执行几条一起的Sql语句
    PetShop 4.0中有如下用法:
    using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) {
    // Read the returned @ERR
    rdr.Read();
    // If the error count is not zero throw an exception
    if (rdr.GetInt32(1) != 0)
    throw new ApplicationException("DATA INTEGRITY ERROR ON ORDER INSERT - ROLLBACK ISSUED");
    }
    其中cmd对象的Sql语句如下所示(我在调试中取出来的):
    Declare @ID int; 
    Declare @ERR int; 
    INSERT INTO Orders VALUES
    (@UserId, @Date, @ShipAddress1, @ShipAddress2, @ShipCity, @ShipState, @ShipZip, @ShipCountry, @BillAddress1, @BillAddress2, @BillCity, @BillState, @BillZip, @BillCountry, 'UPS', @Total, @BillFirstName, @BillLastName, @ShipFirstName, @ShipLastName, @AuthorizationNumber, 'US_en'); 
    SELECT @ID=@@IDENTITY; 
    INSERT INTO OrderStatus VALUES(@ID, @ID, GetDate(), 'P'); 
    SELECT @ERR=@@ERROR;
    INSERT INTO LineItem VALUES( @ID, @LineNumber0, @ItemId0, @Quantity0, @Price0); 
    SELECT @ERR=@ERR+@@ERROR;
    INSERT INTO LineItem VALUES( @ID, @LineNumber1, @ItemId1, @Quantity1, @Price1); 
    SELECT @ERR=@ERR+@@ERROR;
    SELECT @ID, @ERR

  • 相关阅读:
    canvas
    学习总结
    后台管理人员项目,添加和查询的思路
    写了项目的一些心得
    学了一丢丢的正则皮毛
    已学的前端存储(学生)
    $.ajax()方法详解即自己遇到问题(新手)
    C#中 decimal 的四舍五入
    自己写一个C#数据结构:用List<T>实现一个简单的Stack
    【转】在CentOS 6.X上部署C# 开发环境
  • 原文地址:https://www.cnblogs.com/zywf/p/4644068.html
Copyright © 2020-2023  润新知