Linq to sql:使用存储过程删除数据

本文详细介绍了如何创建SQL存储过程以实现留言簿中数据的删除和回复操作,包括参数选择、执行流程及跟踪SQL语句。同时,通过一个实际例子展示了如何使用存储过程修改特定字段值,如将用户名从admin更改为notadmin。

创建如下存储过程:

 

create proc delmessage

 

@id uniqueidentifier

 

as

 

delete tbguestbook where id=@id

 

按照前面的步骤生成存储过程方法,并为删除操作执行这个存储过程方法。在选择参数

 

的时候我们可以看到,ID 分当前值和原始值,我们选择当前值即可

无须改动任何逻辑代码,进行删除留言操作后可以跟踪到下面的SQL

 

EXEC @RETURN_VALUE = [dbo].[delmessage] @id= @p0

 

-- @p0: Input Guid (Size = 0; Prec = 0;Scale = 0)

 

[9e3c5ee3-2575-458e-899d-4b0bf73e0849]

 

-- @RETURN_VALUE: Output Int32 (Size = 0;Prec = 0; Scale = 0) []

 

使用存储过程更改数据

 

创建如下存储过程:

 

create proc replymessage

 

@id uniqueidentifier,

 

@reply varchar(500)

 

as

 

update tbguestbook set reply=@reply,isreplied=1 where id=@id



由于更新的时候并不会更新主键,所以我们可以为两个参数都指定当前值。回复留言后

 

可以跟踪到下面的SQL

 

EXEC @RETURN_VALUE = [dbo].[replymessage]@id = @p0, @reply = @p1

 

-- @p0: Input Guid (Size = 0; Prec = 0;Scale = 0)

 

[67a69d0f-a88b-4b22-8939-fed021eb1cb5]

 

-- @p1: Input AnsiString (Size = 6; Prec =0; Scale = 0) [464456]

 

-- @RETURN_VALUE: Output Int32 (Size = 0;Prec = 0; Scale = 0) []

 

假设有这样一种应用,我们需要修改留言簿中不合法的用户名:

 

create proc modiusername

 

@oldusername varchar(50),

 

@newusername varchar(50)

 

as

 

update tbguestbook set username=@newusernamewhere username = @oldusername

 

有个网友起名叫“admin”,我们要把所有这个名字修改为“notadmin”

然后运行下面的测试代码:

 

 

var messages = from gb inctx.tbGuestBooks

 

select gb;

 

foreach (var gb inmessages)

 

                {

 

if(gb.UserName == "admin")

 

                                gb.UserName = "notadmin";

 

                }


运行程序后能跟踪到下面的SQL



SELECT [t0].[ID], [t0].[UserName],[t0].[PostTime], [t0].[Message], [t0].[IsReplied],

 

[t0].[Reply]

 

FROM [dbo].[tbGuestBook] AS [t0]

 

EXEC @RETURN_VALUE = [dbo].[modiusername]@oldusername = @p0,

 

@newusername = @p1

 

-- @p0: Input AnsiString (Size = 5; Prec =0; Scale = 0) [admin]

 

-- @p1: Input AnsiString (Size = 8; Prec =0; Scale = 0) [notadmin]

 

-- @RETURN_VALUE: Output Int32 (Size = 0;Prec = 0; Scale = 0) []

 

到这里,你应该能明白当前值和原始值的含义了吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值