11-SqlCommand.ExecuteReader相关

本文介绍了SqlCommand.ExecuteReader在不同CommandBehavior设置下的行为差异,探讨了如何通过调整CommandType为CommandType.StoredProcedure来实现数据插入并返回SqlDataReader,同时给出了利用SELECT SCOPE_IDENTITY()获取最后插入ID的方法。

1)SqlCommand.ExecuteReader(CommandBehavior.CloseConnection)

command的属性为CommandBehavior.CloseConnection时,在关闭dr时会自动关闭conn;

2)将 CommandText 发送到 Connection 并生成一个 SqlDataReader

当COMMAND的属性CommandType为CommandType.Text,且command.CommandText="INSERT INTO..."时,SqlCommand.ExecuteReader执行了INSERT语句,并且把数据插入了数据库,但是没有返回SqlDataReader.

获取插入的数据时,可以更改CommandType为CommandType.StoredProcedure,存储过程为:

    ALTER PROCEDURE dbo.AddCustomer
       (
        
@ID int
,
        
@Name nvarchar(60
),
      
       )
    
AS

        
        
INSERT INTO
               Customers (ID, Name)
        
VALUES
               (
@ID, @Name)
            
        
SLECT *

            
FROM Users
        
WHERE

               ID
= @ID
        
        
RETURN

此时,可以返回SqlDataReader.

3)在执行Sql插入后执行SELECT SCOPE_IDENTITY()可以获取最后插入ID

在查询语句后面,增添一 个SELECT SCOPE_IDENTITY()的查询,这查询将返回当前同一个操作范围内插 入IDENTITY字段的最后那个identity 值。(详见
技术文档中关 于SCOPE_IDENTITY()的内容以及为什么你应该使用SCOPE_IDENTITY()而不是 @@IDENTITY)。确认在添加SELECT语句前,你在INSERT语句后面添一个分号 。

转载于:https://www.cnblogs.com/zerobug/archive/2008/05/18/1201932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值