linq to sql 增删改查
ORM《Object Relation Mapping》
Linq To Sql:
一、建立Linq To Sql 类 :
理解上下文类: Linq To Sql 类名+context 利用上下文类可以访问数据库中的每一个表;
****************************************** 分类 应用*******************************************************
注: 1 info为实际引用的表名
2 在执行某一功能时都需要先将上下文类实例化出来。
★★★★★ ★★★★★ ★★★★★ ★★★★★ 一、查询类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
MyDBdataContext context= new MyDBContext();//将上下文类实例化
1 查询所有并显示
MyDBdataContext context= new MyDBContext();//将上下文类实例化
list<info> list = context.info.tolist(); //执行查询操作;
DataGridView1.DataSouse = list; //将查询到的数据显示出来
2 单条件查询--等值查询
var mama = from p in context. info where p.code == "n002" select p // 查询方式一
var mama = context.info where (p=>p.code=="n002"); //查询方式二 lambda 表达式
dataGridview1.datasouce = mama // 送至页面显示;
3 单条件查询----不等值查询
var mama = from p in context.info where p.code !="n002" select p //法一
var mama = context.info where (p=>p.code !=n002); // 法二 lambda 表达式
var mama = context.info where( p => datatime.now - p.birthday.values.year); // 时间的提取方法
dataGridview1.datasouce = mama // 送至页面显示;
4 多条件查询:
//var query = from p in _Context.Info where p.Sex == true && p.Birthday.Value.Year > 1985 select p; //法一
//var query = _Context.Info.Where(p=>p.Sex==true && p.Birthday.Value.Year>1985); 法二 lanbda 表达式
var query = _Context.Info.Where(p => p.Sex == true).Where(p=>p.Birthday.Value.Year>1985) ; //多条件逻辑与可以用链式表达式写
dataGridView1.DataSource = query;
5 模糊查询:
var mama = from p in context.info where p.name contains("张") selsect p ;// 相当于 like'%张%' 模糊查询--包含什么字符的信息
//var query = from p in _Context.Info where p.Name.StartsWith("张") select p; // like '张%' 模糊查询--以什么字符开头的信息
//var query = from p in _Context.Info where p.Name.EndsWith("张") select p; //like '%张' 模糊查询--以什么字符结尾的信息
//var query = from p in _Context.Info where p.Name.Substring(1,1) == "张" select p;// like '_张%' 模糊查询-- 一第几位是什么字符的信息
var query = _Context.Info.Where(p => p.Name.StartsWith("张"));
6 集合操作:
var q1 = from p in _Context.Info where p.Sex== true select p;
var q2 = _Context.Info.Where(p => p.Birthday.Value.Year > 1985);
交集 : var query = q1.Intersect(q2);
并集 : var query = q1.Union(q2);
差集 : var query = q2.Except(q1);
7 统计函数:
var query = _Context.Info.Where(p => p.Birthday.Value.Year > 1985);
//this.Text = query.Count().ToString(); // 求数量
//this.Text = query.Sum(p=>DateTime.Now.Year - p.Birthday.Value.Year).ToString(); //求和
//this.Text = query.Average(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString();//求平均值
//this.Text = query.Max(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString() ; // 求最大值
this.Text = query.Min(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString(); // 求最小值
7 转化操作:
var mama = from p in context.info where p.name contains "张" select p;
List<info> list = mama.ToList(); // 将查询结果转化为泛型集合:
info[] list = mama.ToArray(); // 将查询结果转化为数组;
info data = mama.tosingle(); // 将查询结果转化为单个对象
info data= mama.tofirst(); // 将查询结果转化为单个对象
8 将查询结果 分页操作
//每页多少条pagesize,要找第几页pageno
var query = _Context.Info.Skip(2*3).Take(2); // 从查询结果中skip(跳跃)2行 每行3条记录 要取跳跃后的 2 行;
dataGridView1.DataSource = query;
9 特殊用法记录
1 去除查询中的重复语句: var mama = from p in convert.info where p.name contains "张"select p .distinct() ;
★★★★★ ★★★★★ ★★★★★ ★★★★★ 二 、添加类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
添加操作:
MyDBdataContext context= new MyDBContext();//将上下文类实例化
info data = new info();// 将要添加的表格先实例化;
data.Code = txtCode.Text; // 进行初始化
data.Name = txtName.Text;
data.sex =Convert.Toboolean(textsex.text);
data.nation =txtNation.Text;
data.Birthday = Convert.TodateTime(textBirthday.Text);
Context.info.insertOnSubmit(data ); //告知上下文类在点击提交的时候执行插入操作;
Context.SubmitChanges(); // 上下文提交到数据库
★★★★★ ★★★★★ ★★★★★ ★★★★★三、删除类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
删除操作
// 通过上下文类找到要删除的对象
MyDBdataContext context= new MyDBContext();//将上下文类实例化
var sc = from mama in context.info where mama.Code select mama;
if(sc.count() >0)
info data = sc.first();
// 告诉上下文一下
Context.info.delectOnsubmit(data);
// 上下文类提交到数据库
Context.SubmitChangs();
★★★★★ ★★★★★ ★★★★★ ★★★★★四 、修改类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
修改操作
MyDBdataContext context= new MyDBContext();//将上下文类实例化
//找到要修改的数据
var tianjia = from mama in Context.info where p.code == txtcode.text select mama
// 修改数据
data.Name = txtName.Text;
data.Sex = Convert.ToBoolean(txtSex.Text);
data.Nation = txtNation.Text;
data.Birthday = Convert.ToDateTime(txtBirthday.Text);
// 上下文类提交到数据库
Context.Submitchanges();
linq to sql 增删改查的更多相关文章
- Linq to sql 增删改查(转帖)
http://blog.csdn.net/pan_junbiao/article/details/7015633 (LINQ To SQL 语法及实例大全) 代码 Code highlightin ...
- linq的简单增删改查
Linq高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名,将列名完整映射成字段名数据库数据访问,能大大减少代码量.(反正最后结果就是不用写ado.Net那一套增删改查,有一套封装好 ...
- [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界
本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...
- 表结构修改以及sql增删改查
修改表结构 修改表名 alter table 表名 rename 新名 增加字段 alter table 表名 add 字段名 数据类型 约束 删除字段 alter table 表名 drop 字段名 ...
- sql增删改查封装
App.config文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> ...
- sql增删改查-转载
一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdent ...
- SQL增删改查
1.增 INSERT INTO table_name VALUES (value1, value2,....) INSERT INTO table_name (列1, 列2,...) VALUES ( ...
- Linq to XML 增删改查
Linq to XML同样是对原C#访问XML文件的方法的封装,简化了用xpath进行xml的查询以及增加,修改,删除xml元素的操作.C#访问XML文件的常用类:XmlDocument,XmlEle ...
- SQL 增删改查(具体)
一.增:有3种方法 1.使用insert插入单行数据: insert [into] <表名> [列名] values <列值> insert into Strdents (na ...
随机推荐
- Web服务器(CassiniDev的裁减版)
做此程序的原因是将软件部署简化,省去IIS的麻烦部署,减少项目实施人员的工作量和工作复杂度 Server sv = , "/", @"D:\web", IPAd ...
- 转载:DIV+CSS有可能遇到的问题
[总结]DIV+CSS有可能遇到的问题 一.超链接访问过后hover样式就不出现的问题? 被点击访问过的超链接样式不在具有hover和active了,解决方法是改变CSS属性的排列顺序: L-V-H- ...
- Spring MVC防止数据重复提交
现实开发中表单重复提交的例子很多,就包括手上这个门户的项目也有这种应用场景,用的次数多,但是总结,这还是第一次. 一.基本原理 使用token,给所有的url加一个拦截器,在拦截器里面用java的UU ...
- NAT类型与穿透 及 STUN TURN 协议
STUN : Simple Traversal of User Datagram Protocol [UDP] Through Network Address Translators [NATs] S ...
- WPF RichTextBox 控件常用方法和属性
以下内容转自 http://blog.csdn.net/yulongguiziyao/article/details/25330551. 1. 取得已被选中的内容: (1)使用 RichTextBox ...
- 我的javascript学习之路(一)对象之基础
做了2个多月的ajax项目,对js的学习觉得了深入了不少,把自己的一些学习的经验贴出来,希望对初学者有所帮助,也希望大家能指出我的错误之处或者不当之处. javascript 是基于对象的语言,为什么 ...
- scenes & segues within storyboards
Scenes Scenes in a storyboard represent content shown within one screen in your application. A scene ...
- Theatre Square
http://codeforces.com/problemset/problem/1/A Theatre Square time limit per test 2 seconds memory lim ...
- [Node.js] Configuring npm package.json scripts
With a node package manager's (npm) package.json script property, you can preconfigure common tasks ...
- Android端百度地图API使用详解
百度地图API简介 百度地图移动版API(Android)是一套基于Android设备的应用程序接口,通过该接口,可以轻松的访问百度服务和数据,构建功能丰富.交互性强的地图应用程序. 百度地图移动版A ...