• 三层架构下的用户登录检测。


    这个是我也的三层下的登录检测,用到一个检查用户名密码是否匹配的存储过程,和几个对数据库操作的类。

    1.检查用户名密码是否匹配的存储过程:

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go

    -- =============================================
    --
     Author:        sixi
    --
     ALTER  date: 2008,6,12
    --
     Description:    Check Login.如果登陆成功,返回0;用户名错误,返回1;密码错误返回2
    ALTER PROCEDURE [dbo].[CheckLog]
        
    -- Add the parameters for the stored procedure here
        @userID nvarchar(50),
        
    @PWD nvarchar(50),
        
    @rst int output
    AS

    if not exists
        (
            
    select * from userinfo where userID=@userID
        )
    BEGIN
        
    select @rst=1
        
    return
    END
    if not exists
        (
            
    select * from userinfo where userID=@userID and PWD=@PWD
        )
    BEGIN
        
        
    SET NOCOUNT ON;
        
    select @rst=2
        
    return
        
        
    END

    BEGIN
        
    select @rst=0
    END




    2.数据库操作类。

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;

    /// <summary>
    /// This class include connection to the database and Execute SQl sentence.
    /// </summary>

    public class S_DataExecute
    {
        
    private string dbconn;
        
    private SqlConnection conn ;
        
    private SqlException sqlerror;
           
    public S_DataExecute()
        
    {//默认构造函数
            dbconn = ConfigurationManager.ConnectionStrings["iqmsSup_BSConnectionString"].ConnectionString;
            conn 
    = new SqlConnection(dbconn);
            sqlerror 
    = null;
            
        }

        
    public SqlConnection getConn()
        
    {//获取连接
            return conn;
        }

        
    public void OpenConn()
        
    {//打开连接
            try
            
    {
                
    if (conn.State != ConnectionState.Open)
                    conn.Open();
            }

            
    catch (SqlException e2)
            
    {
                sqlerror 
    = e2;
            }

        }

        
    public void CloseConn()
        
    {//关闭连接
            try
            
    {
                
    if (conn.State != ConnectionState.Closed)
                    conn.Close();
            }

            
    catch (SqlException e2)
            
    {
                sqlerror 
    = e2;
            }

        }

        
    public SqlException GetSqlError()
        
    {//获取错误
            return sqlerror;
        }

        
        
    public SqlParameter MakeSqlParameter(string _ParameterName, int _length, SqlDbType _type,object _value,ParameterDirection direction)
        
    {//构造sql语句参数
            SqlParameter sp=new SqlParameter(_ParameterName, _type, _length);
            
    if((direction!=ParameterDirection.Output)&&_value!=null)
                 sp.Value
    =_value;
            sp.Direction 
    = direction;
            
    return sp;
        }


       
    public int CheckLogIn(string UserName, String PWD)
        
    {
            
    //如果登陆成功,返回0;用户名错误,返回1;密码错误返回2
            int rst = -1;//默认为-1如果客户端检测到是-1则会查看sqlerror.message
            SqlCommand cmd = new SqlCommand("checklog"this.getConn());
            cmd.Parameters.Add(
    this.MakeSqlParameter("UserID",50,SqlDbType.NVarChar,UserName,ParameterDirection.Input));
            cmd.Parameters.Add(
    this.MakeSqlParameter("PWD"50, SqlDbType.NVarChar, PWD, ParameterDirection.Input));
            SqlParameter sp 
    = this.MakeSqlParameter("rst"50, SqlDbType.Int, null, ParameterDirection.Output);
            cmd.Parameters.Add(sp);
            cmd.CommandType 
    = CommandType.StoredProcedure;
            
    try
            
    {
                
    this.OpenConn();
                cmd.ExecuteNonQuery();
                rst 
    = int.Parse(sp.Value.ToString());
            }

            
    catch (SqlException e2)
            
    {
                
    this.sqlerror = e2;
            }

            
    finally
            
    {
                CloseConn();
            }

            
    return rst;
        }

    }

    ////////////////////////////////
    ////////Sixi. Let it be.../////
    //////////////////////////////

  • 相关阅读:
    从一个iOS毛头小子到现在的高级工程师, 我总结了一些经验,先跟大家分享一下一些好的资料
    iOS面试题---Objective_C语言特性:分类、扩展、代理、通知、KVO、KVC、属性
    200道iOS面试题面试题整理,底层、技术亮点公司需要的这里都有
    [iOS 开发] iOS 开发从菜鸟到高手?听听他们怎么说
    2020年面向iOS开发人员的知识点总结(更新中)
    OC项目转Swift指南
    来自老程序员的10条中肯建议
    面对职业瓶颈,iOS 开发人员应该如何突破?
    憨憨程序猿,不要让你的技术被简历埋没了
    总结:实现线程同步的八种方式
  • 原文地址:https://www.cnblogs.com/sixiweb/p/1344277.html
Copyright © 2020-2023  润新知