1、单元单元9 9:使用使用LINQLINQ技术访问数据库技术访问数据库任务3:使用LINQ编辑数据WEB 应应 用 开开 发发主要内容使用LINQ查询数据1使用LINQ插入数据2使用LINQ更新数据3使用LINQ删除数据4综合实例:简易留言簿5学习目标技术应用背景一、任务3:简易留言簿使用LINQ数据库技术完成一个简易留言簿的实现。要求:设计两个页面,发表留言页面和后台管理页面,在发表留言页面,用户可以发表留言信息;后台管理页面可以实现管理员回复和留言删除。一、任务3:简易留言簿(续)留言页面管理页面二、基本知识与技能使用LINQ查询数据库1.创建LinqDBDataContext 类的实例db
2、。2.使用LINQ 查询表达式查询UserInfo 表中ID 列的值小于10,且Username 列的值的长度大于5的数据。3.将述LINQ查询表达式的查询结果保存为result 变量。其中,结果由UserInfo表的Username 列的值和Role 表的RoleName 列的值组成。4.把result 变量设置为GridView 控件的数据源,并绑定该控件的数据,显示查询结果。二、基本知识与技能使用LINQ查询数据库创建数据上下文实例LINQ 查询表达式查询数据设置数据源,并绑定数据二、基本知识与技能使用LINQ操作数据库1.创建一个包含要提交的列数据的新对象。2.将这个新对象添加到与数据
3、库中的目标表关联的 LINQ to SQL Table 集合。3.将更改提交到数据库。1、插入数据二、基本知识与技能使用LINQ操作数据库创建数据上下文实例插入数据二、基本知识与技能使用LINQ操作数据库二、基本知识与技能使用LINQ操作数据库 查询数据库中要更新的行。对得到的 LINQ to SQL 对象中的成员值进行所需的更改。将更改提交到数据库。2、修改操作 二、基本知识与技能使用LINQ操作数据库创建数据上下文实例修改值更新数据二、基本知识与技能使用LINQ操作数据库 查询数据库中要删除的行。对得到的 LINQ to SQL 对象中的行使用DeleteOnSubmit()方法进行删除操
4、作。将更改提交到数据库3、删除操作二、基本知识与技能使用LINQ操作数据库创建数据上下文实例删除数据查询数据提交到数据库三、任务3的实施三、任务3的实施三、任务3的实施Default页面前台代码 姓名 留言 三、任务9-3的实施Default页面前台代码 -管理员回复 三、任务3的实施Default页面后台代码public partial class _Default:System.Web.UI.Page GuestBookDataContext ctx=new GuestBookDataContext();/创建实体类 protected void Page_Load(object send
5、er,EventArgs e)if(!IsPostBack)SendInit();/数据初始化 protected void btn_SendMessage_Click(object sender,EventArgs e)tbGuestBook gb=new tbGuestBook();/定义一个集合对象 gb.UserName=tb_UserName.Text;/指定对象属性值 gb.Message=tb_Message.Text;/指定对象属性值 gb.IsReplied=false;/指定对象属性值 gb.PostTime=DateTime.Now;/指定对象属性值 ctx.tbGues
6、tBook.InsertOnSubmit(gb);/插入对象 ctx.SubmitChanges();/提交更改 SendInit();/初始化数据 tb_UserName.Text=;/清空文本框值 tb_Message.Text=;/清空文本框值 三、任务3的实施Default页面后台代码private void SendInit()/数据初始化 rpt_Message.DataSource=from gb in ctx.tbGuestBook orderby gb.PostTime descending select gb;/指定repeater控件数据源 rpt_Message.Dat
7、aBind();/绑定数据源 protected void btn_to_admin_Click(object sender,EventArgs e)Response.Redirect(admin.aspx);/跳转到管理员页面 三、任务3的实施Admin页面前台代码 -三、任务3的实施Admin页面前台代码 asp:Button ID=bt_delmessage runat=server Text=删除留言 CommandName=DeleteMessage CommandArgument=/管理员回复 asp:TextBox ID=tb_reply runat=server TextMod
8、e=MultiLine Width=300 Height=50 Text=asp:Button ID=bt_sendReply runat=server Text=发表回复 CommandName=SendReply CommandArgument=/三、任务3的实施Admin页面后台代码public partial class Admin:System.Web.UI.Page GuestBookDataContext ctx=new GuestBookDataContext();/创建DataContext类对象 protected void Page_Load(object sender,
9、EventArgs e)if(!IsPostBack)SendInit();/初始化数据 private void SendInit()rpt_Message.DataSource=from gb in ctx.tbGuestBook orderby gb.PostTime descending select gb;/指定数据源 rpt_Message.DataBind();/绑定数据源 protected void btn_to_default_Click(object sender,EventArgs e)Response.Redirect(default.aspx);三、任务3的实施Ad
10、min页面后台代码protected void rpt_Message_ItemCommand(object source,RepeaterCommandEventArgs e)if(e.CommandName=DeleteMessage)/单击了删除信息按钮 int id=Convert.ToInt32(e.CommandArgument.ToString();/获取消息ID var del=from gbdel in ctx.tbGuestBook where gbdel.ID=id select gbdel;/查询 foreach(var d in del)/遍历集合 ctx.tbGue
11、stBook.DeleteOnSubmit(d);/删除数据 ctx.SubmitChanges();/提交到数据库 SendInit();/刷新数据源 if(e.CommandName=SendReply)/单击了回复按钮 int id=Convert.ToInt32(e.CommandArgument.ToString();/获取消息ID var update=from gbup in ctx.tbGuestBook where gbup.ID=id select gbup;/查询 foreach(var d in update)/遍历集合 d.Reply=(TextBox)e.Item.FindControl(“tb_Reply”).Text;/获取回复文本框值 d.IsReplied=true;/更改回复状态为已回复 ctx.SubmitChanges();/提交数据库 SendInit();/刷新数据源 四、小结通过学习本单元的内容可以掌握使用LINQ技术操作数据库的方法。五、作业Thank You!