SQL Server插入记录后获取自动增长列的值
来源:互联网 发布:专业剪辑软件 编辑:程序博客网 时间:2024/06/05 15:11
在关系数据库中,我们经常会给一个表的主键设置为自增列,而在开发过程中,有时又会需要在插入一条记录后获得它的主键值,我们可以通过创建带有输出参数的存储过程来完成这一任务。在T-SQL中,有三个函数可以用来检索标识列值:SCOPE_IDENTITY, @@IDENTITY, IDENT_CURRENT.
其中,SCOPE_IDENTITY为微软推荐使用函数,它返回当前执行范围内的最后一个标识值,大部分情况下都适用;@@IDENTITY函数包含当前会话中任何表生成的最后一个标识值,由于这个函数受触发其影响,可能不会返回我们预期的值;IDENT_CURRENT函数返回在任何会话中以及任何范围内为特定表生成的最后一个标识值。推荐大家使用SCOPE_IDENTITY函数。
下面我们就来创建一个可以返回标识值的存储过程:
CREATE PROCEDURE dbo.CustomerInsert @Name varchar(15), @Age int, @Sex bit, @id int OUTASINSERT INTO Customer(Name,Age,Sex) VALUES(@Name,@Age,@Sex)SET @id = SCOPE_IDENTITY()
可以在数据访问层写这样一个方法:
/// <summary> /// 插入一条Customer记录 /// </summary> /// <param name="cus">要插入的Customer</param> /// <param name="dt">要更新的数据表</param> /// <returns>插入的Customer的id值</returns> public int InsertCustomer(Customer cus, DataTable dt) { using (SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True")) { // 创建SqlDataAdapter SqlDataAdapter adp = new SqlDataAdapter(); //创建InsertCommand命令 adp.InsertCommand = new SqlCommand("dbo.CustomerInsert", con); //指定InsertCommand类型为存储过程 adp.InsertCommand.CommandType = CommandType.StoredProcedure; //向InsertCommand加入参数 adp.InsertCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar, 20, "Name")); adp.InsertCommand.Parameters.Add(new SqlParameter("@Age", SqlDbType.Int, 4, "Age")); adp.InsertCommand.Parameters.Add(new SqlParameter("@Sex", SqlDbType.Bit, 1, "Sex")); SqlParameter parId = adp.InsertCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 0, "id")); //指定id为输出参数 parId.Direction = ParameterDirection.Output; DataRow row = dt.NewRow(); row["Name"] = cus.Name; row["Sex"] = cus.Sex; row["Age"] = cus.Age; dt.Rows.Add(row); //更新数据库 adp.Update(dt); //返回id值 return Convert.ToInt32(row["id"].ToString()); } }
- SQL Server插入记录后获取自动增长列的值
- 如何插入一条记录获取插入后的自动增长ID列的方法.
- sql server 怎么记录最新插入的数据(没有自动增长列)?
- sql server 获取自动插入记录后的sysid
- 怎么获取自动增长列的值并插入表
- SQL Server实现列的自动增长
- SQL server插入数据后,如何获取自增长字段的值?
- SQL Server 获取插入记录后的ID(自动编号)
- SQL Server 获取插入记录后的ID(自动编号) -收录
- 使用SQL Server 获取插入记录后的自增ID(自动编号)
- 使用SQL Server 获取插入记录后的ID(自动编号)
- SQL server获取插入后自动标识值
- SQL Server自增长列插入指定值教程
- SQL Server 2012 自动增长列,值跳跃问题
- SQL Server 2012 自动增长列,值跳跃问题
- SQL Server 2012 自动增长列,值跳跃问题
- SQL Server自动增长列重置
- JDBC插入返回自动增长列的值
- ruby数组
- 迷你MVVM框架 avalonjs 0.82发布
- 双指针的建立与释放
- 从CCAnimation获取第一帧来创建CCSprite实例
- oracle ocp考试流程
- SQL Server插入记录后获取自动增长列的值
- struts2简介
- Storm集群安装详解
- Oracle 层级语句 树形结构 显示根节点 不显示根节点
- Windows下JDK安装后的环境变量配置
- windows消息响应机制之一:消息分析器
- 串口调试助手,上位机数据,有时正常,有时出现周期性乱码(有时不正常)。
- thrift 搭建服务器框架
- 设计模式之观察者模式