Sqlserver函数之SCOPE_IDENTITY()demo

  之前有看到有人给我留言说希望有个SCOPE_IDENTITY()函数的demo,今天得闲,就整了个出来,希望对大家有帮助.既然做了就从头开始吧,先创建一个表,如果下

 
  
create table Tab1
(
id
int identity primary key ,
Texts
nvarchar ( 50 )
)

表结构很简单,就两个字段,一个ID,一个texts,ID是个整型自增长的主键,texts是个长度为50个字符的字符类型。表建好后,写存储过程。先贴代码再解释。

 
  
-- ================================================
--
Template generated from Template Explorer using:
--
Create Procedure (New Menu).SQL
--
--
Use the Specify Values for Template Parameters
--
command (Ctrl-Shift-M) to fill in the parameter
--
values below.
--
--
This block of comments will not be included in
--
the definition of the procedure.
--
================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
--
Author: Fuyuanzhao
--
Create date: 2011-3-25
--
Description: 添加测试数据
--
=============================================
CREATE PROCEDURE AddTexts
-- Add the parameters for the stored procedure here
@Texts nvarchar ( 50 ), @id int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT Off ; -- 这里设置为OFF,这样会返回影响的行数,如果设置为ON这不会返回影响的行数

-- Insert statements for procedure here
insert into tab1(texts) values ( @Texts )
set @id = SCOPE_IDENTITY ()
END
GO

这是个往表tab1里插入数据的存储过程,需要两个参数。这存储过程很简单,就不再解释了,如有需要解释的请留言。存储过程写完后就是程序中怎么来调用存储过程,代码如下:

 
  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace TestWeb
{
public partial class AddTextsProcedure : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
SqlConnection SqlConnection
= new SqlConnection( " SqlConnectionString " );
try {
using (SqlCommand SqlCommand = new SqlCommand( " AddTexts " , SqlConnection))
{
SqlCommand.CommandType
= CommandType.StoredProcedure;
SqlCommand.Parameters.Add(
" @Texts " ,SqlDbType.NVarChar, 50 ).Value = " 张三 " ;
SqlCommand.Parameters.Add(
" @id " , SqlDbType.Int, 8 ).Value = 0 ;
SqlCommand.Parameters[
" @id " ].Direction = ParameterDirection.Output;
if (SqlCommand.ExecuteNonQuery() == 1 )
{
int ID = ( int )SqlCommand.Parameters[ " @id " ].Value;
}

}
}
catch (Exception ex)
{
#if DEBUG
throw ex;
#else
#endif
}
finally
{
SqlConnection.Close();
}
}
}
}
这只是个简单的demo,我们往表tab1里插入了“张三",我们的到的是张三的ID

转载于:https://www.cnblogs.com/_fyz/archive/2011/03/25/sql.html

SqlScope 4.0 By Lostinet.com ISqlScope的模型和实现代码。附加例子。 优点: 自动分配释放数据库连接 执行数据库操作的代码不需要明确知道数据库连接的时间和地点,所以代码更容易编写和管理。 支持显式事务的多层嵌套。这样可以再任何时候建立回滚点和进行任何形式的提交或回滚。 使用using来对连接,查询,和事务进行管理,代码简洁明了。 支持多种常用的数据库访问的Method,使数据库操作代码更短。 通过把ISqlScope放到较大的范围内,可以实现该范围内数据连接的高效利用。 { 例如: using(ss.EnterQuery()) { DataGrid1.DataBind(); } 这个时候, DataGrid1_OnItemDataBound...里 { using(ss.EnterQuery())//数据库连接已打开,继续使用。 { //..进行查询和对DataGridItem进行操作 } } } 对例子进行测试: 如果您的电脑上启动了Microsoft SqlServer 2000并且启用了Windows验证, 那么这个例子就可以直接编译然后执行了。 不能运行的情况自己解决 关于ISqlScope.CreateXXX,ISqlScope.ExecuteXXX的参数都是 string cmdtext,params object[] sqlparams cmdtext是基本的sql语句。 sqlparams是附加的用于SQL查询操作的参数。 参数是可变长的,原理就像string.Format(str,a0,a1..)一样。 可以(cmdtext,p0,p1,p2..)这样调用,也可以直接传递object[]数组。 详细请看C#的params关键字 附加的参数按 @p0,@p1,@p2,...等名称输入到SqlCommand.Parameters中。有兴趣的看SqlScopeImpl.CreateCommand方法的代码 如果附加参数为null,那么将以DBNull.Value插入到SqlParameter中。 提示: 在Main中选择例子来运行。 最好先打开SqlServer事件探查器来监视程序对SqlServer的操作活动。 对于 ss.ExecuteXXX( @" SELECT * FROM Employees Where EmployeeID=@p0 ",cid); 这样的写法,最好为字符串的显示改变背景颜色。 操作:VS.Net-工具-选项-环境-字体和颜色-显示项-字符串(最下面) 背景色推荐改为浅灰色 例子: A,B,C是基本的数据库操作 D讲解了ExecuteReader,CreateAdapter,CreateCommand的用法。 E是事务的初步概念。 由E开始,深化地讲解一下ISqlScope对事务的操作的简便C#语法。 这个是和dotnet的Exception体制结合的很深的。 如果没有Exception的概念。建议先去看看dotnet中对于Exception的介绍。 所提供的例子不够复杂。如果有更高要求的应用,可以写信联系我。 lostinet@lostinet.com 2003-5-21 主要的实现由SqlScopeImpl移动到Connection中去了。 H,I是两个关于新特征的例子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值