存储过程是允许重复执行某个任务的SQL语句。只要创建某个过程一次,就可以在程序中多次重用它。提高了程序的可维护性,允许程序以统一 优化的方式访问数据库。
前面我们讲述了如何创建数据库及表,接下来我们使用SQL语句在SQL2012Db数据库中创建一个UserLogin表,如下所示:
CREATE TABLE UserLogin
(
CardId int IDENTITY(1,1), --Identity makes the column Not Null internally
UserName varchar(10) Not Null, --Name value is a must and can't be Null
LoginPwd varchar(10),
LoginType int
)
添加数据:
use SQL2012Db
Go
Insert into UserLogin (UserName,LoginPwd,LoginType)
Values('Jack','111111',1),
('User','222222',0)
Go
然后我们利用select * from UserLogin查询一下,如下所示:
基本语法:
create procedure 存储过程名
@参数1,
@参数2,
...
@参数N
as
begin
Transact SQL语句块;
End
根据上述建立的数据库表,我们希望通过创建存储过程实现如下功能:
通过登录界面输入UserName,Password及LoginType来实现账户登录,这个存储过程主要是比较数据库表中存储的信息与用户登录界面输入的信息做比对来完成登录是否成功。
存储过程创建:
Create proc [dbo].[proc_UserLogin]
@p_User varchar(100),
@p_Password varchar(200),
@p_Type int
as
declare @CardID varchar(20), @Name varchar(50),
@Password varchar(20)
select @CardID = CardID, @Name = UserName,
@Password = LoginPwd
from UserLogin
where ((@p_Type = 0 and CardID = @p_User) or (@p_Type = 1 and UserName = @p_User))
if @@rowcount <= 0
begin
return -1;
end
if @Password != @p_Password
begin
return -2
end
select @CardID as CardID, @Name as Name, @Password as Password
return 0
实现如下所示:
基本语法:
--执行
execute 存储过程名
@参数1,
@参数2,
...
@参数N
SQL语句实现:
declare @return_value int
EXEC @return_value = [dbo].[proc_UserLogin]
@p_User = 'Jack',
@p_Password = '111111',
@p_Type = 1
select 'return_value' = @return_value
点击执行/F5,得到结果如下:
4.C#实现上述过程
实现:https://download.csdn.net/download/xuanyin235/10959252
参考:https://blog.csdn.net/Eastmount/article/details/11576385