呼呼!亲爱的程序员你好,我也是个程序员,不过三层我写了很久了嘞,二楼的没有回答完整,因该是bin目录下面添加引用,然后选择项目,在把3层已用过来,下面是代码
实体层(model)
其实就是封装字段
namespace Cssmodel
{
public class CssModel
{
private string _Sid;//定义一个静态的变量
///
/// 账号
///
public string Sid//封装字段
{
get { return _Sid; }
set { _Sid = value; }
}
private string _pwd;//定义一个静态的变量
///
/// 密码
///
public string Pwd//封装字段
{
get { return _pwd; }
set { _pwd = value; }
}
}
}
数据操作层(dal)
这个层写的就是连接数据库啊!数据库的增删改查代码啊,什么的
namespace CssDal
{
///
/// 查询登陆添加用户操作类
///
public class CjdengluDal
{
///
/// 查询登陆
///
/// 用户名
/// 密码
///
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
}
///
/// 添加用户
///
/// 用户名
/// 密码
///
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);//调用帮助类
}
///
/// 删除用户
///
/// 用户名
///
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);//调用帮助类
}
}
///
/// 修改用户
///
///
///
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
{
///
/// 管理员登录,添加操作类
///
CjdengluDal dal = new CjdengluDal();//实例化CjdengluDal类
///
/// 管理员登录
///
/// 用户名
/// 密码
///
public bool login(CssModel _mdl)//定义一个bool的方法,方法名为login,参数为_mdl
{
return dal.select(_mdl);//返回一个dal,调用select方法,传参
}
///
/// 管理员添加
///
/// 用户名
/// 密码
///
public int Add(CssModel _mdl)//定义一个int的方法,方法名为Add,参数为_mdl
{
return dal.insert(_mdl);//返回一个dal,调用insert方法,传参
}
///
/// 管理员删除
///
/// 用户名
///
public int shanchu(int _Sid)//定义一个int的方法,方法名为shanchu,参数为_mdl
{
return dal.delete(_Sid);//返回一个dal,调用delete方法,传参
}
}
///
/// 修改管理员
///
///
///
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???不过我觉得我的注释写的已经够全的了,要是看不懂,那真的是我表达有问题了,其实一个程序员并不是写代码有多牛,那这个程序员就有多牛,注释写的牛的程序员,那才是好的程序员,还有楼主,我不支持你用代码生成器,那东西是有一定编程经验的用才好,新手用的话,报个错都不知道怎么办,废话也说完了,题也写完了,还有一件事,请采纳
那你去下个完整的三层架构源码来学习。
很简单的就可以实现了。用listview这个控件,根本没什么技术问题!
还是学习下三层吧!