<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type="text/css"> #tab1 { 100%; text-align: center; background-color: navy; border-spacing: 1px; } #tab1 thead tr { color: white; } #tab1 tbody tr { background-color: white; } #tab1 td { padding: 7px 5px; } #tab1 tbody tr:hover { background-color: #eeeeee; } </style> </head> <body> <form id="form1" runat="server"> <table id="tab1"> <thead> <tr> <td>Ids</td> <td>编号</td> <td>用户名</td> <td>密码</td> <td>昵称</td> <td>性别</td> <td>生日</td> <td>民族</td> <td>操作</td> </tr> </thead> <tbody> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <tr> <td><%#Eval("Ids") %></td> <td><%#Eval("Ucode") %></td> <td><%#Eval("UserName") %></td> <td><%#Eval("PassWord") %></td> <td><%#Eval("nickname") %></td> <td> <%#Eval("SexStr") %> </td> <td><%#Eval("birthday","{0:yyyy年MM月dd日}") %></td> <td><%#Eval("NationN") %></td> <td> <a href="update.aspx?id=<%#Eval("Ids") %>">修改</a> <a href="delete.aspx?id=<%#Eval("Ids") %>">删除</a> </td> </tr> </ItemTemplate> </asp:Repeater> </tbody> </table> <a href="insert.aspx">添加</a> </form> </body> </html>
Linq 数据库访问技术
Linq to Sql类
ADO.NET - 最基础的数据库访问技术
EF框架 - 折中的数据库访问技术
LinQ - 最高级的数据库访问技术
前台
创建Linq to sql 类 相当于创建ADO.NET 的实体类
展示数据后台代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //DataClassesDataContext con = new DataClassesDataContext()只能在using里 用一旦到下面的花括号结束释放缓存 using (DataClassesDataContext con = new DataClassesDataContext())//(创建Linq类的名字)数据上下文这样一个对象操作数据库 { Repeater1.DataSource = con.Users.ToList(); Repeater1.DataBind(); } } } }
添加数据的前台
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="insert.aspx.cs" Inherits="insert" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form id="form1" runat="server"> <div> 编号:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /><br /> 用户名:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /><br /> 密码:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br /><br /> 昵称:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br /><br /> 性别: <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox><br /> <br /> 生日: <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox><br /> <br /> 民族: <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox><br /> <br /> <asp:Button ID="Button1" runat="server" Text="添加" /> </div> </form> </body> </html>
后台
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class insert : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } //添加点击事件 void Button1_Click(object sender, EventArgs e) { //添加多条数据 List<Users> ulist = new List<Users>(); for (int i = 1; i < 9; i++) { Users u = new Users(); u.Ucode = "U02" + i;//编号不能重名 u.UserName = TextBox2.Text + i; u.PassWord = TextBox3.Text; u.NickName = TextBox4.Text; u.Sex = Convert.ToBoolean(TextBox5.Text);//问号型可放null装换成boolean型 u.Birthday = Convert.ToDateTime(TextBox6.Text); u.Nation = TextBox7.Text; ulist.Add(u); } //添加一条数据 Users u = new Users(); u.Ucode = TextBox1.Text; u.UserName = TextBox2.Text; u.PassWord = TextBox3.Text; u.NickName = TextBox4.Text; u.Sex = Convert.ToBoolean(TextBox5.Text);//问号型可放null装换成boolean型 u.Birthday = Convert.ToDateTime(TextBox6.Text); u.Nation = TextBox7.Text; using (DataClassesDataContext con = new DataClassesDataContext()) { con.Users.InsertOnSubmit(u);//吧用户输入的内容放到里面但是还没添加 con.Users.InsertAllOnSubmit(ulist);//吧集合放到里面 con.SubmitChanges();//添加到数据库 } } }
属性扩展
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Users 的摘要说明 /// </summary> public partial class Users { public string SexStr { get { return this._Sex == true ? "男" : "女"; } } public string NationN { get { return UserNation.NationName;//有主外键的连接另一个数据库 //没有主外键连接另一个数据库 using (DataClassesDataContext con = new DataClassesDataContext()) { UserNation un = con.UserNation.Where(r => r.NationCode == this.Nation).FirstOrDefault(); if (un != null) return un.NationName; else return "无"; } } } }
删除后台代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class delete : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string id = Request["id"];//接受传过来的值 //创建linq上下文对象 using (DataClassesDataContext con = new DataClassesDataContext()) { //按照id查询数据对象 lamda表达式 Users u = con.Users.Where(hehe => hehe.Ids == Convert.ToInt32(id)).FirstOrDefault(); //下面的代码同上 // List<Users> ulist = con.Users.ToList();查询数据库返回tolist类型 假设查到10w条数据 //List<Users> ulist2= ulist.Where(r => r.Ids.ToString() == id).ToList();根据传过来的id查询ulist里的数据 在从上面的10w的数据有查到5w数据 // Users uu= ulist2.FirstOrDefault();再从上面的5w条数据查出第一条数据 //如果查到这条数据 if (u != null) { //通过上下文对象准备删除 con.Users.DeleteOnSubmit(u); //提交执行所有改变 con.SubmitChanges(); //删除成功并提示并返回主页面 Response.Write("<script>alert('删除成功!');window.location.href='default.aspx';</script>"); } else { //防止用户从地址栏输入删除 Response.Write("<script>alert('未查到此用户数据!!');window.location.href='default.aspx';</script>"); } } } }
修改
前台代码(默认用户不会输入错误)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="update.aspx.cs" Inherits="update" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form id="form1" runat="server"> <div> 编号:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> <br /> 用户名:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /> <br /> 密码:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br /> <br /> 昵称:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br /> <br /> 性别: <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox><br /> <br /> 生日: <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox><br /> <br /> 民族: <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox><br /> <br /> <asp:Button ID="Button1" runat="server" Text="保存修改" /> </div> </form> </body> </html>
后台代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class update : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; string id = Request["id"];//接受传过来的值 if (!IsPostBack) { //根据传过来的数据查看数据库里有木有 防止用户通过地址栏输入修改 using (DataClassesDataContext con = new DataClassesDataContext()) { Users u = con.Users.Where(r => r.Ids.ToString() == id).FirstOrDefault(); if (u != null)//查到数据 { //将查到的数据库信息赋给界面文本 TextBox1.Text = u.Ucode; TextBox2.Text = u.UserName; TextBox3.Text = u.PassWord; TextBox4.Text = u.NickName; TextBox5.Text = u.Sex.ToString(); TextBox6.Text = u.Birthday.ToString(); TextBox7.Text = u.Nation; } else { //未取到数据提示并跳转 } } } } //修改界面的保存修改 void Button1_Click(object sender, EventArgs e) { string id = Request["id"];//接受传过来的id //要修改之前在查一遍数据库防止这边修改这条数据另一边删除这条数据 using (DataClassesDataContext con = new DataClassesDataContext()) { Users u = con.Users.Where(r => r.Ids.ToString() == id).FirstOrDefault(); if (u != null) { //将用户输入的内容放到数据库 u.PassWord = TextBox3.Text; u.NickName = TextBox4.Text; u.Sex = Convert.ToBoolean(TextBox5.Text); u.Birthday = Convert.ToDateTime(TextBox6.Text); u.Nation = TextBox7.Text; con.SubmitChanges();//执行操作 //提示修改成功并返回主界面 Response.Write("<script>alert('修改成功');window.location.href='default.aspx';</script>"); } else { } } } }