继上篇:CYQ.Data 轻量数据层之路 继续狂热升级(三)之后,本篇要进入应用示例介绍使用了:

为了使一篇文章就能介绍完整个示例,我选用了简单的:登陆+注册+留言版本功能,来一步一步介绍如何使用的:

当前环境是:VS2005+SQL2005

从数据库说起吧,我们创建一个新的数据库,起名叫:Message

接着新建两个表:Users+Message,上图:

为避免本篇节过长,本示例只选用最关键的字段了,大伙可以根据上面的图自己创建数据库与表。

接着我们新建网站来示例[这里没选择新建应用程序,怕个别人没装sp1补丁,示例打不开!]

接下来一步一脚印了:

1:新建网站项目,如起名叫:Cyq.Data.MessageDemoProject

新建完后,F5运行,产生配置文件web.config先,接着在配置文件里添加数据库链接:

<connectionStrings>
<add name="Conn" connectionString="Server=.;database=Message;uid=sa;pwd=123456"/>
</connectionStrings>

2:添加引用:CYQ.Data.dll

浏览定位选择CYQ.Data.dll

3:生成分页查询存储过程与枚举:我们新建页面:WriteOut.aspx,用于生成输出:

A:生成分页存储过程

protected void Page_Load(object sender, EventArgs e)
{
        //输出分页存储过程
        Response.Write(CYQ.Data.SQL.OutPutData.GetSelectBaseOutPutToHtmlForSql2005());
}

写好后,右键浏览该页面,把输出的信息“Ctrl+A -> Ctrl+C"全选->复制

我们把生成的分页存储过程到数据库里执行一下:

B:生成表枚举

我们还是在当前页面的里敲代码:

protected void Page_Load(object sender, EventArgs e)
    {
        //输出存储过程
        //Response.Write(CYQ.Data.SQL.OutPutData.GetSelectBaseOutPutToHtmlForSql2005());

//输出表视图枚举:
        CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData();
        Response.Write(data.OutPutAllTableEnum(CYQ.Data.SQL.OutPutData.TableType.U, CYQ.Data.SQL.OutPutData.FiledDescriptionType.Sql2005));
    }

我们注释掉了生成存储过程的,添加了生成表枚举,说明参数:

TableType.U:指生成表枚举
TableType.V:指生成视图枚举
DiledDescriptionType.NoDescription:不生成注释
DiledDescriptionType.Sql2005:生成注释--对应Sql 2005
DiledDescriptionType.Sql2000:生成注释--对应Sql 2000

备注:注释信息取自数据库字段的说明,如果数据库字段说明没写东西,生成的就是No Descrpiotn

接着,我们新添加一个类:TableNames,来存放生成的枚举信息:生成后的类默认会在App_Code文件夹下:

4:开始项目:我们新建两个页面:登陆(Login.aspx);注册(Reg.aspx);留言界面[默认已有](Default.aspx)

A:注册用户:界面如下图,Html代码大伙自己布局了:

如图:只有用户名和密码:双击进“提交注册”按钮事件里敲入以下代码:

protected void btnReg_Click(object sender, EventArgs e)
    {
        if (txtPassword.Text != txtPasswordAgain.Text)
        {
            lbMsg.Text = "两次密码不一致!";
            return;
        }
        MAction action = new MAction(TableNames.Users);
        if (action.GetCount(string.Format("UserName='{0}'", txtUserName.Text.Trim())) > 0)
        {
            lbMsg.Text = "用户已存在!";
            action.Close();
        }
        else
        {
            action.GetFrom(txtUserName);
            action.GetFrom(txtPassword);
            if (action.Insert())
            {
                Session["ID"] = action.Get<int>(Users.ID);
                action.Close();
                Response.Redirect("Default.aspx");
            }
        }
    }

代码不多,大伙看的懂我就不解释了,注册成功后转向Default.aspx页面!

B:登陆界面:截图如下,界面加多了个链接到注册页面去了:

同样双击“登陆”进入后台代码如下:

protected void btnLogin_Click(object sender, EventArgs e)
    {
        MAction action = new MAction(TableNames.Users);
        if(action.Fill(string.Format("UserName='{0}' and Password='{1}'", txtUserName.Text.Trim(), txtPassword.Text.Trim())))
        {
            Session["ID"] = action.Get<int>(Users.ID);
            action.Close();
            Response.Redirect("Default.aspx");
        }
        else
        {
            lbMsg.Text = "用户密码错误!";
            action.Close();
        }
    }

代码同样很简洁,登陆后记录下Session,转向Default.aspx页面:

C:留言页面:我们来看一下界面:[这里先清除下数据库的数据,重新注册添加一点数据]

我先清除以前的旧数据,数据库SQL执行一下语句:

TRUNCATE TABLE [Message]
TRUNCATE TABLE Users

好,重新注册下,留下言,上图:

如上图所示,整个页面分为:

1:最左上角的欢迎
2:三个列表[注册用户/我的留言/所有留言],分别使用GridView/DataList/Repeater绑定
3:右下角的提交留言

我们一个一个看代码:

1:最左上角的欢迎:判断没登陆后就直接转向登陆,如果登陆,直接用Session["ID"]填充数据

protected void LoadMyInfo()
{
        if (Session["ID"] == null)
        {
            Response.Redirect("Login.aspx");
        }
        else
        {
            MAction action = new MAction(TableNames.Users);
            if (action.Fill(Session["ID"]))
            {
                action.SetTo(labUserName);
            }
            else
            {
                labUserName.Text = "读取数据失败!";
            }
            action.Close();
        }
}

2:接下来三个列表的绑定

protected void LoadUserListInfo()//GridView 绑定用户注册信息
    {
        MAction action = new MAction(TableNames.Users);
        gvUsers.DataSource = action.Select();
        gvUsers.DataBind();
        action.Close();
    }
    protected void LoadMyMessageList()//DataList 绑定我的留言
    {
        int count;
        MAction action = new MAction(TableNames.Message);
        dalMyMessage.DataSource = action.Select(1, 10, string.Format("UserID={0}", Session["ID"]), out count);
        dalMyMessage.DataBind();
        action.Close();
    }
    protected void LoadAllMessageList()//Repeater 绑定所有用户留言
    {
        MAction action = new MAction(CustomerSQL.Message);
        rptMessage.DataSource = action.Select();
        rptMessage.DataBind();
        action.Close();
    }

最后一个绑定所有用户留言时,涉及两个表关联,所以传入的表名是CustomerSQL.Message,这个是怎么来的?

我App_Code文件夹下我新建一个类:CustomerSQL,来统一管理SQL:

public class CustomerSQL
{
    public const string Message = "(select m.*,u.UserName from Message m left join Users u on m.UserID=u.ID) v";
}

最后,我们需要在Page_Load方法里加载上面的几个方法:

protected void Page_Load(object sender, EventArgs e)
{
        LoadMyInfo();
        LoadUserListInfo();
        LoadMyMessageList();
        LoadAllMessageList();
}

3:提交留言:提交完后,自我刷新一下界面。

protected void btnSubmit_Click(object sender, EventArgs e)
{
        MAction action = new MAction(TableNames.Message);
        action.GetFrom(txtBody);
        action.Set(Message.UserID, Session["ID"]);
        action.Insert();
        action.Close();
        Response.Redirect(Request.RawUrl);
}

4:还有个退出呢

protected void btnLogout_Click(object sender, EventArgs e)
{
        Session["ID"] = null;
        Response.Redirect("Login.aspx");
}

至此,一个注册+登陆+留言功能的小项目,就轻松写完了,拿上面的代码和你以前写的代码比较下,感觉哪个简洁方便实用呢?

如果用你目前使用的方法写一个一样的,需要花费的时间和精力又是多少?欢迎拍砖留言!

OK,本示例应用到此结束了,最后提供Demo下载[内附数据库脚本]:点击下载

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/08/18/1801518.html

CYQ.Data 轻量数据层之路 应用示例一 留言版(四)相关推荐

  1. CYQ.Data 轻量数据层之路

    CYQ.Data 轻量数据层之路 即时通讯软件 其实本来是不想写使用帮助的,因为在以下的文章中,都有大量的示例存在: CYQ.Data 轻量数据层之路 应用示例一 留言版(四) CYQ.Data 轻量 ...

  2. CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五)

    继上一篇:CYQ.Data 轻量数据层之路 应用示例篇(四) 之后,有兴趣的读者可以放心使用及应用或练习了! 不过,在稳定版本之后,本人又进行了一次华丽的升级,升级记录如下: 1:MAction:增加 ...

  3. CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值(十四)

    上一篇:CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三) 内容概要 本篇继续上一篇内容,本节介绍所有取值与赋值的相关操作. 1:原生:像操作Row一样 2:扩展:对UI操 ...

  4. CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)

    上一篇:CYQ.Data 轻量数据层之路 使用篇四曲 MAction 增删改(十五) 本篇内容概要 本篇继续上一篇内容,本节介绍MProc 类的相关操作. 1:MProc 存储过程操作 2:MProc ...

  5. CYQ.Data 轻量数据层之路 V2.0 震撼惊世 支持多数据库/内置Aop(二十五)

    所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引 前言: 从V1.5发布到现在时隔20天了,终于发布2.0版本了,2.0系列版本由于引入多数据库支持,内部结构改动较大. 但是外面调用 ...

  6. CYQ.Data 轻量数据层之路 使用篇-辅助工具枚举生成器 视频 C (二十)

    说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 优雅V1.4 辅助工具(十)   的附加视频教程. 本次视频介绍了使用工具创建存储过程/生成日志表/生成枚举文件等相关操作,同时以示例实 ...

  7. CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四)

    CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四) 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值 ...

  8. CYQ.Data 轻量数据层之路 使用篇-MAction 数据查询 视频 D (二十一)

    2019独角兽企业重金招聘Python工程师标准>>> 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)   的附加视频教 ...

  9. CYQ.Data 轻量数据层之路 V3.0版本发布-Xml绝对杀手(三十二)

    前言: 继正式发布V2.0到现在,已30来天了,一直静悄悄的都没发布什么版本 中间仅有插播了一下:CYQ.Data 轻量数据层之路 V2.5 抢先体验版本功能说明演示 (二十九) 只因最近花了很多时间 ...

最新文章

  1. 【转】memcached工作原理介绍
  2. 网狐棋牌(三) 调度引擎初步分析
  3. 【TensorFlow】TensorFlow从浅入深系列之十一 -- 教你深入理解卷积神经网络中的卷积层
  4. linux主机设备acl,linux上的终端类型、ACL、PAM模块
  5. 卓岚zlan系列串口服务器,卓岚信息技术隔离型串口服务器ZLAN5143BI概述
  6. SpringBoot配置多数据源(动态切换)
  7. python模拟键盘操作
  8. gdb 查看是否 栈溢出_GDB调试之二栈溢出
  9. Java代理(静态代理、JDK动态代理、CGLIB动态代理)
  10. 如何修改品牌电脑logo,让你电脑开机更个性
  11. chromosome-territories:染色质疆域简介
  12. 群晖aria2 bt没速度_群晖终于开窍了!联手迅雷推出下载套件 NAS功能再上一层楼...
  13. python歌词分析_Python 词云分析周杰伦新歌《说好不哭》
  14. README.md 文件的作用和语法
  15. 我的世界mod开发(5)做一把无敌的剑
  16. 提交github的一些糟心
  17. php如何查询数据库的表,php如何查询mysql表名字,php查询数据库并输出
  18. 评测:最好最有效的PDF在线无损转换免费工具Smallpdf
  19. 阿里矢量图iconfont的使用方法
  20. 没想到锤子坚果R1的投屏功能,还可以这么强大!

热门文章

  1. Tcpdump个人实战总结
  2. python twisted教程 三–开始twisted
  3. 如何把Python脚本导出为exe程序
  4. Python面向对象基础一
  5. FireMonkey 平台初探
  6. 使用MEF方便的扩展
  7. 低学历的非要考研,多半输得更惨
  8. 二本院校学生的命运,是中国最基本的底色
  9. 阿里终面:为什么应用刚启动的时候比较卡,过一会就好了?
  10. 你用的那些开源项目可能已经被放弃维护!