asp.net用三层架构如何实现数据的查询、删除以及录入信息,希望可以有实例说明,谢谢!

如题所述

呼呼!亲爱的程序员你好,我也是个程序员,不过三层我写了很久了嘞,二楼的没有回答完整,因该是bin目录下面添加引用,然后选择项目,在把3层已用过来,下面是代码

实体层(model)

其实就是封装字段

namespace Cssmodel

{

    public class CssModel

    {

        private string _Sid;//定义一个静态的变量

        /// <summary>

        /// 账号

        /// </summary>

        public string Sid//封装字段

        {

            get { return _Sid; }

            set { _Sid = value; }

        }

        private string _pwd;//定义一个静态的变量

        /// <summary>

        /// 密码

        /// </summary>

        public string Pwd//封装字段

        {

            get { return _pwd; }

            set { _pwd = value; }

        }

    }

}

数据操作层(dal)

这个层写的就是连接数据库啊!数据库的增删改查代码啊,什么的

namespace CssDal

{

    /// <summary>

    /// 查询登陆添加用户操作类

    /// </summary>

    public class CjdengluDal

    {

        /// <summary>

        /// 查询登陆

        /// </summary>

        /// <param name="_name">用户名</param>

        /// <param name="_pwd">密码</param>

        /// <returns></returns>

        public bool select(CssModel _mdl)//定义方法名为select,参数为_mdl

        {

            bool f = false;//定义一个bool值 F,为假

            string _sql = string.Format("select * from guanliyuan where Szhanghao = '{0}' and Smima = '{1}'", _mdl.Sid, _mdl.Pwd);//SQL语句,调用参数

            DataTable ds = DBHelper.GetDataTable(_sql, null, CommandType.Text);//调用帮助类

            if (ds.Rows.Count > 0)//判断如果总行数大于0时,F为真

                f = true;

            return f;//返回一个f

        }

        /// <summary>

        /// 添加用户

        /// </summary>

        /// <param name="_name">用户名</param>

        /// <param name="_pwd">密码</param>

        /// <returns></returns>

        public int insert(CssModel _mdl)//定义一个int的方法

        {

            string _sql = string.Format("insert into guanliyuan (Szhanghao,Smima)values('{0}','{1}')", _mdl.Sid, _mdl.Pwd);

            return DBHelper.ExcuteBySQL(_sql, CommandType.Text, null);//调用帮助类

        }

        /// <summary>

        /// 删除用户

        /// </summary>

        /// <param name="_Sid">用户名</param>

        /// <returns></returns>

        public int delete(int _Sid)//定义一个int的方法

        {

            string _sql = string.Format("delete from guanliyuan where Sid = {0}", _Sid);//SQL语句,调用参数

            return DBHelper.ExcuteBySQL(_sql, CommandType.Text, null);//调用帮助类

        }

    }

  /// <summary>

        /// 修改用户

    /// </summary>

        /// <param name="_mdl"></param>

        /// <returns></returns>

        public int UpdateAdmin(AdminModel _mdl)//定义一个int的方法,参数为_mdl

        {

            string _s = "update guanliyuan set Szhanghao";//定义一个字符串,写入SQL语句

            _s += " = '{0}',Shaoma = '{1}',Smima = {2}";//拼接

            _s += " where Sid in ({3})";//拼接

            string _sql = string.Format(_s, _mdl.Sid, _mdl.Number, _mdl.Pwd, _mdl.Id);

            //定义字符串,传参

            return DBHelper.ExcuteBySQL(_sql, CommandType.Text, null);

            //调用帮助类,传参

        }

}

注:帮助类是我自己写的,你要的话我给你,不过最好自己写

业务逻辑层(bll)

这个层也就是调用数据操作层的方法

namespace CssBll

{

    public class CssdengluBll

    {

        /// <summary>

        /// 管理员登录,添加操作类

        /// </summary>

        CjdengluDal dal = new CjdengluDal();//实例化CjdengluDal类

        /// <summary>

        /// 管理员登录

        /// </summary>

        /// <param name="_name">用户名</param>

        /// <param name="_pwd">密码</param>

        /// <returns></returns>

        public bool login(CssModel _mdl)//定义一个bool的方法,方法名为login,参数为_mdl

        {

            return dal.select(_mdl);//返回一个dal,调用select方法,传参

        }

        /// <summary>

        /// 管理员添加

        /// </summary>

        /// <param name="_name">用户名</param>

        /// <param name="_pwd">密码</param>

        /// <returns></returns>

        public int Add(CssModel _mdl)//定义一个int的方法,方法名为Add,参数为_mdl

        {

            return dal.insert(_mdl);//返回一个dal,调用insert方法,传参

        }

        /// <summary>

        /// 管理员删除

        /// </summary>

        /// <param name="_mdl">用户名</param>

        /// <returns></returns>

        public int shanchu(int _Sid)//定义一个int的方法,方法名为shanchu,参数为_mdl

        {

            return dal.delete(_Sid);//返回一个dal,调用delete方法,传参

        }

    }

 /// <summary>

        /// 修改管理员

        /// </summary>

        /// <param name="_mdl"></param>

        /// <returns></returns>

        public int Insert(AdminModel _mdl)//定义一个bool的方法,方法名为select,参数为_mdl

        {

            return _dal.UpdateAdmin(_mdl);//返回一个dal,调用select方法,传参

        }

}

下面是页面调用

using CssBll;//导入业务逻辑层

using Cssmodel;//导入实体层

public partial class SanCengDengLu : System.Web.UI.Page

{

    CssModel model = new CssModel();//实例化实体层

    CssdengluBll bll = new CssdengluBll();//实例化业务逻辑层

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    protected void btndeng_Click(object sender, EventArgs e)

    {

        

        string _name = txtname.Text.Trim();//获取账号框的值

        string _pwd = txtpwd.Text.Trim();//获取密码框的值

        model.Sid = _name;//赋值

        model.Pwd = _pwd;//赋值

        if (bll.login(model))//判断如果调用业务逻辑层的登陆方法成功的话

        {

            Response.Write("登陆成功");//弹出一句话

        }

        else

        {

            Response.Write("登录失败");//弹出一句话

        }

    }

    protected void btndtian_Click(object sender, EventArgs e)

    {

        string _name = txtname.Text.Trim();//获取账号框的值

        string _pwd = txtpwd.Text.Trim();//获取密码框的值

        model.Sid = _name;//赋值    

        model.Pwd = _pwd;//赋值

        if (bll.Add(model) > 0)//判断如果调用业务逻辑层的添加方法,返回的行数大于0的话

        {

            Response.Write("添加成功");//弹出一句话

        }

        else

        {

            Response.Write("添加失败");//弹出一句话

        }

    }

    protected void btnshan_Click(object sender, EventArgs e)

    {

   string _name = txtname.Text.Trim();//获取账号框的值

        model.Sid = _name;//赋值    

        if (bll.shanchu(Sid) > 0)//判断如果调用业务逻辑层的删除方法,返回的行数大于0的话

        {

            Response.Write("删除成功");//弹出一句话

        }

        else

        {

            Response.Write("删除失败");//弹出一句话

        }

    }

           protected void btnshan_Click(object sender, EventArgs e)

    {

        string _name = txtname.Text.Trim();//获取账号框的值

        string _pwd = txtpwd.Text.Trim();//获取密码框的值

        model.Sid = _name;//赋值

        model.Pwd = _pwd;//赋值

            if (_bll.Insert(_mdl) > 0)

            {

 Response.Write("修改成功");//弹出一句话

            }

            else

            {

 Response.Write("修改失败");//弹出一句话

            }

        }

}

如果想用数据绑定控件(GridView,Repeater什么的)来绑定显示的话那么就如下(我用GridView演示)

              gvwlook.DataSource = _blls.Looks(); //调用业务逻辑层的GridView显示方法

        gvwlook.DataBind();

Looks的方法里面就写DataTable,如果你实在是看不懂帮助类的话,我还是在写一遍好了,

//查询

SqlConnection _con = new SqlConnection();//创建数据库连接对象

        _con.ConnectionString = "server = 独角戏-PC\\SQL2005;database = CKdb; uid = sa;pwd =sa123; ";//创建连接数据库字符串

        _con.Open();//打开数据库

        SqlCommand _cmd = new SqlCommand();//创建数据库操作对象

        _cmd.Connection = _con;

        _cmd.CommandText = "select * from xuexi";//SQL语句

        SqlDataReader dr = _cmd.ExecuteReader();//创建数据读取对象

     return dr

//添加

 SqlConnection _con = new SqlConnection();//创建数据库连接对象

        _con.ConnectionString = "server = 独角戏-PC\\SQL2005;database = CKdb; uid = sa;pwd =sa123; ";//创建数据库连接字符串

        _con.Open();//打开数据库

        SqlCommand _cmd = new SqlCommand();//创建数据库操作做对象

        _cmd.Connection = _con;

        _cmd.CommandText = "insert into xuexi(Slanmu,Stid)values('你家蛟哥四号','2')";//SQL语句

        int i = _cmd.ExecuteNonQuery();

 return  i;

//修改

  SqlConnection _con = new SqlConnection();//创建数据库连接对象

        _con.ConnectionString = "server = 独角戏-PC\\SQL2005;database = CKdb; uid = sa;pwd =sa123; ";//创建数据库连接字符串

        _con.Open();//打开数据库

        SqlCommand _cmd = new SqlCommand();//创建数据库操作对象

        _cmd.Connection = _con;

        string _sql = "update xuexi set ";//定义一个字符串,里面写入SQL语句

        _sql += "Slanmu = '你家蛟哥四号',Stid = '3'where Sid = 12";//拼接

        _cmd.CommandText = _sql;

        int i = _cmd.ExecuteNonQuery();

return  i;

//删除

 SqlConnection _con = new SqlConnection();//创建数据库连接对象

        _con.ConnectionString = "server = 独角戏-PC\\SQL2005;database = CKdb; uid = sa;pwd =sa123; ";//创建数据库连接字符串

        _con.Open();//打开数据库

        SqlCommand _cmd = new SqlCommand();//创建数据库操作对象

        _cmd.Connection = _con;

        _cmd.CommandText = "delete from xuexi where Slanmu = '你家蛟哥四号'";//SQL语句

        int i = _cmd.ExecuteNonQuery();

return  i;

好了,基本上就是这样了,我和你一样都是学生,大家有时间研究研究哦!我的QQ是1054709459,如果还是不懂的话,我写到你懂,ok???不过我觉得我的注释写的已经够全的了,要是看不懂,那真的是我表达有问题了,其实一个程序员并不是写代码有多牛,那这个程序员就有多牛,注释写的牛的程序员,那才是好的程序员,还有楼主,我不支持你用代码生成器,那东西是有一定编程经验的用才好,新手用的话,报个错都不知道怎么办,废话也说完了,题也写完了,还有一件事,请采纳

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-22
那你去下个完整的三层架构源码来学习。追问

有没有网址介绍

追答

搜索一下吧,如果没有可以用东软代码生成器,把生成的代码看懂,看三层之间是怎么调用的

追问

我就是用动软代码生成器生成的三层架构,现在让我苦恼的是不知道它们之间应如何调用?很快就要交作业了,我却一点头绪都没有

追答

不知你会SQL吗。
DataSet ds=new BLL.表明(). 方法();

本回答被网友采纳
第2个回答  2011-12-22
很简单的就可以实现了。用listview这个控件,根本没什么技术问题!追问

界面我已经建好了,我是想要从数据库里面逐一的将数据调出来!

追答

调用数据库那是ado.net的技术了
很简单啊,俩种方法可以实现。在asp.net2.0的版本用普通的dataset方法,在3.5以后用强类型dataset来调用,非常简单

第3个回答  2011-12-26
还是学习下三层吧!
相似回答