winform 用linq to SQL 类实现数据库的增删改查 2016年02月18日

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform 用linq to SQL 类实现数据库的增删改查 2016年02月18日相关的知识,希望对你有一定的参考价值。

在C#中,如果用的是SQL server的数据库,由于同是微软旗下的软件,为了方便用户操作,可以用Linq to SQL类来实现对数据库的操作,大大简化了操作。

一、添加一个Linq to SQL的类:

技术分享

 

 

二、在资源管理器中的数据连接中,连接好数据库:

技术分享

 

 

三、将要进行操作的表,拖入到DataClasses1.dbml的操作面板中,这样就完成了对表属性的封装

技术分享

 

四、创建一个FruitDA的类,在里面写数据库增、删、改、查的方法,代码如下:

 

 public class FruitDA
    {
       private DataClasses1DataContext Context;//造一个linq to SQL类的对象 context,数据模型

       public FruitDA()
       {
           Context = new DataClasses1DataContext();//构造函数,在里面把context实例化一下
       }
       public void Insert(Fruit data)//增加方法
       {
           Context.Fruit.InsertOnSubmit(data);//将data数据增加到fruit表中
           Context.SubmitChanges();//有改动,提交到数据库
       }

       public void Update(Fruit data)//修改方法
       { 
           //先查询,后修改
           Fruit sdata = Context.Fruit.Where(r => r.Ids == data.Ids).First();
           //等号大于号是lamda表达式,等号大于号相当于list泛型集合里的 in list
           //r可以随意起名,代表一行数据;相当于Fruit data里的data,foreach每走一行就是一行的数据,一行数据就是data
           //如果相等就符合条件,如果不相等就走下一条
           //筛选完了之后,取第一条(.first)里面的数据,返回一个fruit类型的对象

           if (sdata != null)//判断一下,如果数据不为空,按照sdata的数据去修改data里面的数据
           {
               
               sdata.Name = data.Name;
               sdata.Price = data.Price;
               sdata.Numbers = data.Numbers;
               sdata.Source = data.Source;
               sdata.Stack = data.Stack;
               sdata.Image = data.Image;
           }
           Context.SubmitChanges();//修改提交到数据库
       }

       public void Delete(Fruit data)//删除方法
       {
           Context.Fruit.DeleteOnSubmit(data);
           Context.SubmitChanges();
       }

       public List<Fruit> Select()//查询方法,返回一个fruit类型的泛型集合
       {
           return Context.Fruit.ToList();//用tolist函数将结果转化为泛型集合
       }

       public List<Fruit> selectbyname(string name)//模糊查询
       {
           return Context.Fruit.Where(r=>r.Name.Contains(name)).ToList();
           //看看筛选的这一行有没有像name的,用contains包不包含定义的小写的name,再转换为泛型集合返回
       }

       public bool checkfruit(string name, decimal price)//验证用户名密码的样式
       {
           return Context.Fruit.Where(r => r.Name == name && r.Price == price).Count() > 0;
           //筛选多个条件同时满足用&&,满足条件数据的条数用count
           //如果大于零返回true,小于等于零返回false
       }

       public Fruit select(string ids)//查询一条数据
       {
           return Context.Fruit.Single(r => r.Ids == ids);
           //如果查询的是主键的话,可以用single
           //不是主键,用where筛选
       }
    }

 

 

测试代码如下:

 

 private void Form1_Load(object sender, EventArgs e)
        {
            List<Fruit> list = new FruitDA().Select();
            dataGridView1.DataSource = list;
        }                                                                                                            
技术分享

 

以上是关于winform 用linq to SQL 类实现数据库的增删改查 2016年02月18日的主要内容,如果未能解决你的问题,请参考以下文章

LinQ to SQL 查询

用 Linq To SQL 和 DTO 分离关注点

WP7 Linq To SQL(SQL CE) IDataErrorInfo

如何通过MVC向数据库中添加数据?用 的是。net、C#、linq to sql 类,在线等!!!

如何将 LINQ-to-SQL 映射到 BLL 类?

LINQ to SQL 调用 SQL Server 的系统函数