cenbz 发表于 2014-8-2 14:07:51

通过sqlserver的标量值函数来认证用户登陆

本帖最后由 cenbz 于 2014-8-2 14:08 编辑

如果你想做各一个用户登陆的模块,只有用户的帐号和密码都正确时,才能进去主窗口,那代码如何实现呢,其实网上有很多例子,方法也有很多。今来一个通过创建sql server的可编程性--函数--标量值函数(以下步骤是在sql server 2005,sql server manage studio express执行),在需要认证的代码模块中来调用这个函数就可以了。下面来个例子:
数据库test 建有一个表为users,表里面有ID nvarchar(20) 和Password nvarchar(20) 字段 。在test数据库里面的【可编程性--函数--标量值函数】,右击标量值函数就可建立一个函数,或者直接新建查寻,在里面写SQl语句。
if exists (select * from dbo.sysobjects where id = object_id(N'.') and xtype in (N'FN', N'IF', N'TF'))
drop function . --上面检测该函数名是否存在,如果该函数名存在就删除ULogin这个是我们要新建的函数名
GO
---如果你确定你的数据库里面没有这个函数名 上面也可以不写

create function ULogin(@tidnvarchar(20),@tpas nvarchar(20))--括号里面是参数名 类型
returns bit--函数返回值 我们返回bit型 到时候可以强制转化为boo型做判断
as
begin
declare @bid nvarchar(20)
declare @bps nvarchar(20)
select @bid=t.ID,@bps=t.password from users t where t.ID=@tid
      if @bid=NULL--用户名不存在
                        return 0
      if @bps=@tpas--用户名存在,判断密码是否相等
                        return 1--认证通过
return 0
end
GO


函数写好了。现在我们到应用程序里面用它
    SqlConnection con = new SqlConnection(@"你懂的");
SqlCommand com=new SqlCommand("select dbo.TLogin('帐户名','密码')",con);
            try
            {
            con.Open();
            if ((bool)com.ExecuteScalar())   
            {       /*登陆成功*/       }
            else {          /*登陆失败*/      }
            con.Close();
            }      
            catch (Exception)
            {      con.Close();   }


到此就完成了。

kklikes 发表于 2014-8-2 16:22:48

新人求罩

ibcadmin 发表于 2014-8-2 22:23:27

{:3_44:}

cenbz 发表于 2014-8-2 22:56:30

ibcadmin 发表于 2014-8-2 22:23

这方法仅仅玩玩而已,应该没什么实际意义。

ibcadmin 发表于 2014-8-3 09:31:35

cenbz 发表于 2014-8-2 14:56
这方法仅仅玩玩而已,应该没什么实际意义。

挺好的   有没有当个版主的兴趣?
页: [1]
查看完整版本: 通过sqlserver的标量值函数来认证用户登陆