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(这个有时效)
- asp.net学习之路之登录+access数据库操作
- vb.net操作数据库之ACCESS(一)
- ASP.NET操作Access数据库
- asp.net 操作Access数据库
- C#学习笔记之操作Access数据库
- [我的ASP.net学习历程]数据库操作之(二)
- asp.net连接access数据库之c#篇 实例
- ASP.NET数据库编程之Access连接失败
- Asp.Net 之 数据库的操作
- ASP.net中操作Access数据库
- ASP.NET的ACCESS数据库操作类
- ASP.NET的ACCESS数据库操作类
- ASP.Net与Access数据库操作
- asp.net 操作Access数据库,sql
- ASP.Net操作Access数据库总结
- C# asp.net 操作ACCESS 数据库 类库
- vb.net操作数据库之ACCESS(1)
- vb.net操作数据库之ACCESS(2)
- duilib学习资源汇总
- 项目1:存储班长信息的学生类
- 第九周项目1-复数类中的运算符重载(续)
- 1076 排序
- 为什么要使用RTP
- asp.net学习之路之登录+access数据库操作
- 黑马程序员——c语言基础:字符串
- 关于2015阿里移动推荐算法大赛的总结(三)——机器学习
- 【Java并发编程】之十七:深入Java内存模型—内存操作规则总结
- HTML DOM clip 属性
- Android快速入门教程总结帖
- apk文件安装成功后,Android AVD桌面上不显示图标
- C语言中的字符串函数
- 混合编程---c++调用matlab生成的dll----findCircles的应用