在数据库应用中,比较常见一个操作就是插入一条数据到包含自动增加ID字段的表中,并要获取插入数据的ID值,sql的insert语句属于无返回值的操作,如何才能获取最后插入的数据的ID值?在微软的MSDN中有一个例子,使用了SqlCommand.ExecuteScalar()方法和SqlServer中的scope_identity()函数。
ExecutedScalar()方法功能为:执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行。
scope_identity()函数在联机手册中的描述:返回插入到同一作用域中的标识列内的最后一个标识值。一个范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
下面的示例创建一个 SqlCommand,然后使用 ExecuteScalar 执行它。向该示例传递两个字符串,一个字符串表示要插入到表中的新值,另一个字符串用于连接至数据源。如果已插入新行,则此函数会返回新的“Identity”列值,如果失败,则返回 0。