Java struts中的总控制器action大家都很熟悉了 。刚接触struts的是时候觉的那个总控制器实在是
太棒了。
java:
用户将请求提交给action,通过读struts-config.xml找到下发给哪个action
sql:程序将请求提交到数据库的1个控制器(可以有多个控制器),控制器在分发执行。
sql中的控制器我大体分
查询控制器
操作控制器
其他
OK我们来些个控制器
1.建立表
CREATE TABLE [dbo].[t_userinfo] (
[FID] [int] IDENTITY (1, 1) NOT NULL ,
[Fname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Fpwd] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[FSex] [bit] NULL ,
[Femail] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.操作控制器
CREATE proc UserinfoAction
(
@Fname varchar(50),
@Fpwd varchar(50),
@FSex bit,
@Femail varchar(100),
@request int,
@response varchar(100) output
)
as
begin
declare @count int
if(@request=1)--增加
begin
select @count=count(Fname) from t_userinfo where Fname=@Fname
if(@count=0)
begin
insert into t_userinfo (Fname,Fpwd,Fsex,Femail) values
(@Fname,@Fpwd,@FSex,@Femail)
set @response='添加成功!'
return
end
else
begin
set @response='用户名以存在'
return
end
end
else if(@request=2)--修改密码
begin
update t_userinfo set Fpwd=@Fpwd where Fname=@Fname
set @response='密码修改成功'
return
end
else if(@request=3)--修改信息
begin
update t_userinfo set Fsex=@Fsex,Femail=@Femail where Fname=@Fname
set @response='信息修改成功'
return
end
else if(@request=4)--删除用户
begin
delete t_userinfo where Fname=@Fname
set @response='用户删除成功'
return
end
end
测试
declare @response varchar(50)
--新增用户
--execute UserinfoAction 'wgx','123','1','xinao520@126.com',1,@response output
--密码修改
--在修改密码 里只跟用户名和密码有关,这个时候我们性别,和email可有也可以没有
--execute UserinfoAction 'wgx','2d344','','xinao520@126.com',2,@response output
--修改信息
--execute UserinfoAction 'wgx','','1','hello@126.com',3,@response output
--删除用户
execute UserinfoAction 'wgx','','','',4,@response output
select @response
select * from t_userinfo
注意的事项
1.在分支里写return
2.用不到的参数可以不赋值,也可以赋值,根据程序来,怎么方便怎么来
java里一般都是对象整个传过来,一般全赋值
调用存储过程的时候只要注意 request参数
他来决定是执行什么操作
比如
new UserService().UpdateCreateUser(User u,1)新增用户
new UserService().UpdateCreateUser(User u,2)用户修改密码
new UserService().UpdateCreateUser(User u,3)用户修改资料
效率问题
存储过程的效率肯定是比程序里调SQL高
今天先总结到这里。这些只是我个人的积累,有些人可能不爱这么用。
希望大家都给我提宝贵意见。我会及时修正。
谢谢
Wind's Leaf