asp.net学习之路之登录+access数据库操作

来源:互联网 发布:tcl42寸网络电视 编辑:程序博客网 时间:2024/05/22 19:30

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

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


管理员界面:



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


再来聊聊 这个登录。

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

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

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


登录是这样做的:

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

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


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

 /// <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; 这里是的 “userNamer” 可以随便命名。当然,命名还是那个建议: 见名知义。

然后再跳转的新页面的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;        }    }
CSDN下载地址:

http://download.csdn.net/detail/hk_5788/8708571

微云下载地址:

http://url.cn/ecJqJ3(这个有时效)







0 0
原创粉丝点击