zoukankan      html  css  js  c++  java
  • C#-WebForm-LinQ(一)-LinQ:语言集成查询(Language Integrated Query)-增删改查、属性扩展

    LinQ-语言集成查询(Language Integrated Query)  

    高集成化的数据库访问技术

    LINQ 2 SQL 实际是将数据库的表映射成程序中的类

    会把数据库的表名原封不动的变成类名

    数据库的列名原封不动的变成字段名/属性名

    所有的操作都是通过Linq自动生成的一个上下文对象来进行操作的

    Linq的名字+"DataContext"

    一个数据库对应一个Linq

    去除数据访问类的简便开发方式

    不需要新建数据库访问类,直接用< using(DataClassesContext con = new DataClassContext()){} >进行数据库访问

    一、后台绑定数据  数据查询 con.Users; 或 con.Users.ToList();

    public partial class Default3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                using (DataClassesDataContext con = new DataClassesDataContext())
                {
                    Repeater1.DataSource = con.Users.ToList();
                    Repeater1.DataBind();
                }
            }
        }
    }

    二、删除代码  数据删除 con.Users.DeleteOnSubmit(u); 参数是要删除的完整数据

    满足条件  r => r.username == Request["uname"]  r是循环遍历数据的每一条数据

    FirstOnDefault()  返回第一个或没有时返回默认值null  
    public partial class Delete : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                using (DataClassesDataContext con = new DataClassesDataContext())
                {
                    //通过提交过来的用户名查找整条用户信息
                    Users u = con.Users.Where(r => r.username == Request["uname"]).FirstOrDefault();
                    //整条信息进行删除
                    con.Users.DeleteOnSubmit(u);
                    con.SubmitChanges();
                    //跳回主页面
                    Response.Redirect("Default3.aspx");
                }
            }
        }
    
    }

    三、添加数据

    con.Users.InsertOnSubmit(u);  con.SubmitChanges();
    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)
        {
            //要添加的数据
            Users u = new Users();
            u.username = TextBox1.Text;
            u.password = TextBox2.Text;
            u.nickname = TextBox3.Text;
            u.sex = Convert.ToBoolean(TextBox4.Text);
            u.birthday = Convert.ToDateTime(TextBox5.Text);
            u.nation = TextBox6.Text;
            u.@class = TextBox7.Text;
    
            //打开数据库进行操作:添加数据
            using(DataClassesDataContext con=new DataClassesDataContext ())
            {
                con.Users.InsertOnSubmit(u);
                con.SubmitChanges();
                Response.Redirect("Default3.aspx");
            }
        }
    
    }

    四、修改数据  查询出数据然后进行修改

    public partial class Update : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //要修改的数据
                using (DataClassesDataContext con = new DataClassesDataContext())
                {
                    Users u = con.Users.Where(r => r.username == Request["uname"]).FirstOrDefault();
                    if (u != null)
                    {
                        TextBox1.Text = u.username;
                        TextBox2.Text = u.password;
                        TextBox3.Text = u.nickname;
                        TextBox4.Text = u.sex.ToString();
                        TextBox5.Text = u.birthday.ToString();
                        TextBox6.Text = u.nation;
                        TextBox7.Text = u.@class;
                    }
                    else
                        Response.Redirect("Default3.aspx?tt=33");
                }
            }
    
            Button1.Click += Button1_Click;
        }
    
        void Button1_Click(object sender, EventArgs e)
        {
            //修改后的数据
            using (DataClassesDataContext con = new DataClassesDataContext())
            {
                Users u = con.Users.Where(r => r.username == TextBox1.Text).FirstOrDefault();
                u.username = TextBox1.Text;
                u.password = TextBox2.Text;
                u.nickname = TextBox3.Text;
                u.sex = Convert.ToBoolean(TextBox4.Text);
                u.birthday = Convert.ToDateTime(TextBox5.Text);
                u.nation = TextBox6.Text;
                u.@class = TextBox7.Text;
                //进行修改
                con.SubmitChanges();
                Response.Redirect("Default3.aspx");
            }
        }
    
    }

    =============================================

    基础知识:如何新建LinQ to SQL 类

    一、新建

    二、点击“服务器资源管理器”

    三、点击“连接到数据库”

     四、选择

    五、将需要的表拖拽至界面,系统自动生成实体类

    =============================================

    高级版操作-去除数据库访问类:

    一、展示页面代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
            * {
                padding: 0px;
                margin: 0px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                昵称:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                出生年份:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                民族:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                班级:<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="查询" />
                <br />
                <table style=" 100%; text-align: center;">
                    <tr style="background-color: navy; color: white;">
                        <td>编号</td>
                        <td>用户名</td>
                        <td>密码</td>
                        <td>昵称</td>
                        <td>性别</td>
                        <td>生日</td>
                        <td>民族</td>
                        <td>班级</td>
                        <td>操作</td>
                    </tr>
                    <asp:Repeater ID="Repeater1" runat="server">
                        <ItemTemplate>
                            <tr>
                                <td><%#Eval("ids") %></td>
                                <td><%#Eval("username") %></td>
                                <td><%#Eval("password") %></td>
                                <td><%#Eval("nickname") %></td>
                                <td><%#Eval("sex") %></td>
                                <td><%#Eval("birthday") %></td>
                                <td><%#Eval("nation") %></td>
                                <td><%#Eval("class") %></td>
                                <td>
                                    <a href="Update.aspx?uname=<%#Eval("username") %>">修改</a>
                                    <a href="Delete.aspx?uname=<%#Eval("username") %>">修改</a>
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:Repeater>
                </table>
                <a href="Insert.aspx">添加</a>
            </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 Default3 : System.Web.UI.Page
    {
        DataClassesDataContext con = new DataClassesDataContext();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                using (con)
                {
                    Repeater1.DataSource = con.Users.ToList();
                    Repeater1.DataBind();
                }
            }
        }
    
    
    
    }
    后台数据绑定

     三、using(){}增删改查(同上)

    =============================================

    低阶版操作-新建数据库访问类:

    一、展示页面代码:

    <%@ 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>
            * {
                padding: 0px;
                margin: 0px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                昵称:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                出生年份:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                民族:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                班级:<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="查询" />
                <br />
                <asp:Repeater ID="Repeater1" runat="server">
                    <HeaderTemplate>
                        <table style=" 100%; text-align: center;">
                            <tr style="background-color: navy; color: white;">
                                <td>编号</td>
                                <td>用户名</td>
                                <td>密码</td>
                                <td>昵称</td>
                                <td>性别</td>
                                <td>生日</td>
                                <td>民族</td>
                                <td>班级</td>
                                <td>操作</td>
                            </tr>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr>
                            <td><%#Eval("ids") %></td>
                            <td><%#Eval("username") %></td>
                            <td><%#Eval("password") %></td>
                            <td><%#Eval("nickname") %></td>
                            <td><%#Eval("sex") %></td>
                            <td><%#Eval("birthday") %></td>
                            <td><%#Eval("nation") %></td>
                            <td><%#Eval("class") %></td>
                            <td>
                                <a href="Update.aspx?uname=<%#Eval("username") %>">修改</a>
                                <a href="Delete.aspx?uname=<%#Eval("username") %>">修改</a>
                            </td>
                        </tr>
                    </ItemTemplate>
                    <FooterTemplate>
                        </table>
                    </FooterTemplate>
                </asp:Repeater>
                <a href="Insert.aspx">添加</a>
            </div>
        </form>
    </body>
    </html>
    展示界面代码

    二、新建 LinQ to SQL 类

    三、新建数据访问类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// DataClassesData 的摘要说明
    /// </summary>
    public class DataClassesData
    {
        DataClassesDataContext con = null;
        public DataClassesData()
        {
            con = new DataClassesDataContext();
        }
        //查询
        public List<Users> Select()
        {
            return con.Users.ToList();
        }
    
        //添加
        public void Insert(Users u)
        {
            con.Users.InsertOnSubmit(u);
            con.SubmitChanges();
        }
    
        //删除
        public void Delete(string uname)
        {
            Users u = con.Users.Where(r => r.username == uname).FirstOrDefault();
            if (u != null)
            {
                con.Users.DeleteOnSubmit(u);
                con.SubmitChanges();
            }
        }
    
    }
    数据访问类:增、删、查

    ==================================================

    属性扩展:

    新建一个类 → partial → 删除其结构函数 → 进行属性扩展

  • 相关阅读:
    ASP.NET的运行原理与运行机制
    VS2008快捷键
    (五)SubSonic的存储过程操作
    110个Oracle常用函数整理汇总
    ASP.NET中HttpModule和HttpHandler的作用及用法
    报表统计(sql面试题)
    ASP.NET C# 数字格式化输出
    ASP.NET Global.ascx 事件大全
    ASP.NET中GUID
    asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
  • 原文地址:https://www.cnblogs.com/qq450867541/p/6380465.html
Copyright © 2011-2022 走看看