先来一组图,看看界面到是怎么样的吧

登录界面,做的相当搓,没做美工。笔者在之前的博文中也有说过,希望不要吐槽哈

access注册码 access登录注册设计_access注册码

管理员界面:

access注册码 access登录注册设计_Session_02


还有个非管理员的界面。 与管理员界面差不多,管理员是可以直接 编辑信息的,而非管理员就不行了。这里就不再赘述了。


再来聊聊 这个登录。

笔者使用的是access数据库。相信装了微软的 office 都有这个数据库的,除非你在安装office的时候 去掉了安装offence数据库的选项。

笔者先创建了一个数据库文件,里面有一张表就是存放登录用户信息的。是这样设计的:

access注册码 access登录注册设计_access注册码_03

当然, 笔者是事先在数据库里面写好了用户名和密码的, 就没有做注册了。


登录是这样做的:

1,先获取登录界面输入的信息并保存

2,再到数据库里面查询,是否存在用户,不存在,则报错如下:

access注册码 access登录注册设计_sql_04


思路大概就是这样了。看看关键代码吧。

/// <summary>
        /// ----resetBtn 按钮事件, 清空输入框内的内容
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void resetBtn_Click(object sender, EventArgs e)
        {
            if (accountTextBox.Text != "" || psdTextBox.Text != "")
            {
                accountTextBox.Text = "";
                psdTextBox.Text = "";
            }
        }


        /// <summary>
        /// ----登录按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void loginBtn_Click(object sender, EventArgs e)
        {
            ///---查询语句
            string accountStr = "select * from [login] where ID = '" + accountTextBox.Text + "'  and  PSD = '" + psdTextBox .Text+ "'";    
            DataSet ds = new DataSet();

            ///---!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ///---这里是使用的一个封装数据库操作的文件里面的一个函数。在博文的最后附上源码 与 链接地址
            ds = AccessHelper.dataSet(accountStr);
            
            ///---判断查找是否成功
            if (ds.Tables[0].Rows.Count > 0)
            {
                Session["userName"] = accountTextBox.Text;
                Session["key"] = psdTextBox.Text;
                ///---跳转到管理员界面
                if (accountTextBox.Text == "admin" && psdTextBox.Text == "admin")
                {
                    Response.Redirect("admin.aspx");
                }
                else
                {
                    Response.Redirect("customer.aspx");
                }
            }
            else
            {
                ///---登录失败
                Response.Write("<script>alert('account or key  is wrong')</script>");
                ///---重置出入框
                accountTextBox.Text = "";
                psdTextBox.Text = "";
            }
        }


要操作数据库, 记得加上 这个 命名空间:

using System.Data;


现在,我们再来聊聊这个  AccessHelper.dataSet()函数。

dataset()原型是:

public static DataSet dataSet(string sqlstr);


这里要传入一个string 类型的字符串, 这个字符串是关于数据库操作的字符串的,比如下面这样:

///---查询语句
            string accountStr = "select * from [login] where ID = '" + accountTextBox.Text + "'  and  PSD = '" + psdTextBox .Text+ "'";


然后, 这个dataSet()函数将会返回一个DataSet 类型的 变量;返回的这个Dataset 变量里面包含了 上面accuntStr 里面对数据库操作的结果。这里, 若查找成功,ds.table[0].Rows.Count 是大于 0的。 也就是说可以判断ds.table[0] (第一张表)的行数判断是否是否在数据库文件内含有待查找的数据。笔者这里是写的查找,当然,你也可以尝试下其他的关于数据库的操作。 笔者在后面将会附上源码与链接地址。

再说说这个弹出错误对话框吧。笔者是这样做的:

Response.Write("<script>alert('account or key  is wrong')</script>");


这样就不用自己额外定义错误窗口啦,(这是个偷懒的办法)


在上面的代码中,还有这个要说说:

Session["userName"] = accountTextBox.Text;
                Session["key"] = psdTextBox.Text;


下面是W3C对Session的解释:

Session 对象

当您操作某个应用程序时,您打开它,做些改变,然后将它关闭。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。但是在因特网上有一个问题:由于 HTTP 地址无法存留状态,web 服务器并不知道您是谁以及您做了什么。

ASP 通过为每位用户创建一个唯一的 cookie 的方式解决了这个问题。cookie 被传送至客户端,它含有可识别用户的信息。这种接口被称作 Session 对象。

Session 对象用于存储关于用户的信息,或者为一个用户的 session 更改设置。存储于 session 对象中的变量存有单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 对象中的信息通常是 name、id 以及参数。服务器会为每个新的用户创建一个新的 Session,并在 session 到期时撤销掉这个 Session 对象。

Session["userName"] = accountTextBox.Text;

然后再跳转的新页面的Page_Load()函数里面这样写

if (Session["userName"] == null || Session["key"] == null)
            {
                Response.Redirect("login.aspx");
            }



这里就在判断是否已经有用户登陆了,如果用户没有登录,那么,就将跳回到登陆界面。



AccessHelper真心好用,它封装了我们常操作数据库的一些函数。

下面是 上面代码中使用到的AccessHelper的源码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Web;


    public class AccessHelper
    {
        protected static OleDbConnection conn = new OleDbConnection();
        protected static OleDbCommand comm = new OleDbCommand();

        public AccessHelper()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        /// <summary>
        /// 打开数据库
        /// </summary>
        private static void openConnection()
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "+HttpContext.Current.Server.MapPath("res\\DB\\stu133.mdb")+" ";
                comm.Connection = conn;
                try
                {
                    conn.Open();
                }
                catch (Exception e)
                { throw new Exception(e.Message); }

            }

        }
        /// <summary>
        /// 关闭数据库
        /// </summary>
        private static void closeConnection()
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
                conn.Dispose();
                comm.Dispose();
            }
        }
        /// <summary>
        /// 执行sql语句
        /// </summary>
        /// <param name="sqlstr"></param>
        public static void excuteSql(string sqlstr)
        {
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                comm.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            { closeConnection(); }
        }
        /// <summary>
        /// 返回指定sql语句的OleDbDataReader对象,使用时请注意关闭这个对象。
        /// </summary>
        /// <param name="sqlstr"></param>
        /// <returns></returns>
        public static OleDbDataReader dataReader(string sqlstr)
        {
            OleDbDataReader dr = null;
            try
            {
                openConnection();
                comm.CommandText = sqlstr;
                comm.CommandType = CommandType.Text;

                dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch
            {
                try
                {
                    dr.Close();
                    closeConnection();
                }
                catch { }
            }
            return dr;
        }
        /// <summary>
        /// 返回指定sql语句的OleDbDataReader对象,使用时请注意关闭
        /// </summary>
        /// <param name="sqlstr"></param>
        /// <param name="dr"></param>
        public static void dataReader(string sqlstr, ref OleDbDataReader dr)
        {
            try
            {
                openConnection();
                comm.CommandText = sqlstr;
                comm.CommandType = CommandType.Text;
                dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch
            {
                try
                {
                    if (dr != null && !dr.IsClosed)
                        dr.Close();
                }
                catch
                {
                }
                finally
                {
                    closeConnection();
                }
            }
        }
        /// <summary>
        /// 返回指定sql语句的dataset
        /// </summary>
        /// <param name="sqlstr"></param>
        /// <returns></returns>
        public static DataSet dataSet(string sqlstr)
        {
            DataSet ds = new DataSet();
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(ds);

            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                closeConnection();
            }
            return ds;
        }
        /// <summary>
        /// 返回指定sql语句的dataset
        /// </summary>
        /// <param name="sqlstr"></param>
        /// <param name="ds"></param>
        public static void dataSet(string sqlstr, ref DataSet ds)
        {
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(ds);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                closeConnection();
            }
        }
        /// <summary>
        /// 返回指定sql语句的datatable
        /// </summary>
        /// <param name="sqlstr"></param>
        /// <returns></returns>
        public static DataTable dataTable(string sqlstr)
        {
            DataTable dt = new DataTable();
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(dt);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                closeConnection();
            }
            return dt;
        }
        /// <summary>
        /// 返回指定sql语句的datatable
        /// </summary>
        /// <param name="sqlstr"></param>
        /// <param name="dt"></param>
        public static void dataTable(string sqlstr, ref DataTable dt)
        {
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(dt);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                closeConnection();
            }
        }
        /// <summary>
        /// 返回指定sql语句的dataview
        /// </summary>
        /// <param name="sqlstr"></param>
        /// <returns></returns>
        public static DataView dataView(string sqlstr)
        {
            OleDbDataAdapter da = new OleDbDataAdapter();
            DataView dv = new DataView();
            DataSet ds = new DataSet();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(ds);
                dv = ds.Tables[0].DefaultView;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                closeConnection();
            }
            return dv;
        }
    }