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 ...
随机推荐
- 如何让windows服务器IIS支持.apk/.ipa文件下载
打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性: 单击MIME类型下的“MIME类型”按钮,打开MIME类型设置窗口: 单击“新建”,建立新的MIME类型: 扩展名是:.apk MI ...
- [翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)
Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 ...
- WinSock异步IO模型之Select
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的. Windows操作系统提供了五种I/O模型,分别是: ■ 选择(select): ■ 异步选择(WSAAsyncSelec ...
- IAR EWARM Argument variables $PROJ_DIR$ $TOOLKIT_DIR$
在IAR中的help中输入argument variables时会找到这样的一个列表: Argument variables On many of the pages in the Options d ...
- axTE3DWindowEx双屏对比控件白屏解决方法以及网上方法的校正(CreateControlOveride)
环境:vs2012,TE 6.5.1,winfrom C# 要做skyline的双屏显示功能,网上找到方法是用axTE3DWindowEx控件实现,把控件拖进去,运行,发现axTE3DWindow是正 ...
- hdu 5277 YJC counts stars 暴力
YJC counts stars Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- C++ 内存泄露处理方法 (转)
1.可以显示内存泄露情况,但无法找到具体的文件位置写法 包含头文件#include <crtdbg.h> 然后在需要检测内存泄露的位置加上语句 _CrtDumpMemoryLeaks(); ...
- Yeoman+Express+Angular在Linux上开发配置方法
$mkdir ExpressWithAngularTest $cd ExpressWithAngularTest choose needed components you'd like to add ...
- 5.ScrollView无法填充满屏幕
问题: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.D ...
- Java 完美判断中文字符的方法
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...