用户登录时调用存储过程验证(接上篇)

--转到Master数据库
Use Master
Go
--检查ForCSharp数据库师傅存在 存在则删除
If exists(Select * from sysdatabases where name=( ' ForCSharp ' )

Drop database ForCSharp

Go

--创建数据库

Create Database ForCSharp

Go

--转到新建的数据库

Use ForCSharp

Go

/*

创建登录信息表  注意:密码字段坚决回避char类型,使用Varchar.

*/

Create Table  Login

(

vUserName varchar(12) NOT NULL  constraint PK_Login_vUser Primary Key,

vPassword varchar(20) NOT NULL

)

Go

--插入一行测试数据

Insert into Login values ( ' pengpeng ' , ' ceshimima ' )

Go

--创建存储过程 注意两个参数的类型,长度,应该和表结构一致

--只有返回Y的时候代表正确,其他情况都代表登录失败

-----------------------存储过程开始----------------------

Create Proc prjcheckUser

@vUser varchar(12) ,@vPwd varchar(20)

As

begin

--如果用户不存在

if exists( select * from Login where vUserName=@vUser )

begin

         if  exists( select * from Login where vUserName=@vUser and vPassword=@vPwd )

       select  ' y ' 

        else

        select  ' 用户 '  +@vSuer+ ' 的密码不正确'

end

else

  begin

  select  ' 用户' +@vUser+ '  不存在 '

  end

End

Go

-----------------存储过程结束-----------------

下边是程序代码

 //登录按钮
        private void button1_Click(object sender, EventArgs e)
        {
                string ConnString ="server=.;database=ForCSharp;uid=sa;pwd=";
            //验证登陆时,执行SQLServer存储过程返回的结果
                string sReturn = null;
            //定义相关对象
                SqlConnection conn = null;
                SqlCommand cmd= null;
            //实例化对象
                conn = new SqlConnection(ConnString);
                cmd = new SqlCommand("prhCheckUser", conn);
            //尝试打开连接
                try
                {
                    conn.Open();
                }
                catch (SqlException err)
                {
                    MessageBox.Show(this, "连接到数据库出现错误./r/n" + err.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            //说明要执行存储过程
                cmd.CommandType = CommandType.StoredProcedure;
            //定义第1个输入参数;数据类型和长度,赋值 说明是输入参数
                cmd.Parameters.Add(new SqlParameter("@vUser", SqlDbType.VarChar, 12));
                cmd.Parameters ["@vUser"].Value = txtUser.Text;
                cmd.Parameters["@vUser"].Direction = ParameterDirection.Input;
            //定义第2个输入参数;数据类型和长度,赋值 说明是输入参数
                cmd.Parameters.Add(new SqlParameter("@vPwd", SqlDbType.VarChar, 20));
                cmd.Parameters["@vPwd"].Value = txtPwd.Text;
                cmd.Parameters["@vPwd"].Direction = ParameterDirection.Input;
                try
                {
                    //执行存储过程
                    SqlDataReader r = cmd.ExecuteReader();
                    //获取数据
                    r.Read();
                    sReturn = r.GetString(0);
                }
                catch (Exception err)
                {
                    MessageBox.Show(this, "执行存储过程出现错误./r/n" + err.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            //根据返回值的不同。显示不同的结果
                if (sReturn == "y")
                    MessageBox.Show(this, "您已成功登录", "SUCC", MessageBoxButtons.OK, MessageBoxIcon.Information );
                else
                    MessageBox.Show(this, sReturn +"!", "输入有误", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
          //退出按钮
        private void btnCancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值