LINQ,全称是Language Intergrated Query的缩写,即“集成语言查询”,利用LINQ可以使数据库的表像类一样使用,简单方便。
下面来用很短的篇幅简单地介绍一下LINQ的使用方法。
准备工作:在SQL SERVER数据库中建立相应的表
这个是一个准备工作,也可以使用ACCESS,Oracle等其他数据库,这里采用SQL SERVER是因为和微软的.NET平台有最好的契合度。
本文使用的是以前建好的练习用数据库。
在Visual Studio中新建C#工程(任意)
不论是控制台,Winform,还是ASP,都支持LINQ,这里我们以控制台程序为例。
先建立一个控制台程序工程。
单击菜单栏中“视图”,选择“服务器资源管理器”,打开“服务器资源管理器”窗口。
在“数据连接”选项上点右键,在弹出的菜单中选择“添加连接”,打开“选择数据源”对话框。
在打开的对话框中选择“Microsoft SQL Server”,点击“继续”。
在下一个对话框中填入服务器名称(本机的话填写localhost即可),选择“Windows账户登录”或者“SQL Server用户登录”,再选择要连接的数据库。单击“确定”。
完成后看到右边的“服务器资源管理器”窗口,我们添加的数据库就在这里。
在“解决资源管理器”中右击工程名,在弹出的菜单中选择“添加”--->“添加新项”,在打开的对话框中选择“LINQ to SQL类”,文件名任意,当然要符合命名规则。
添加完后的界面如下
这个时候就可以把你添加的数据库里的表都添加进来,添加进来后所有的要素都会在这里面出现,包括主键、外键等等
打开DataClasses1.Designer.cs文件,看看是不是所有的表都变成了C#类。
现在我们已经有了LINQ类,那么我们就可以像使用其他类一样去使用它们。
回到Program.cs文件,在Main方法中输入下列示例代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LinqTest { class Program { static void Main(string[] args) { //创建一个DataClass对象,就是在DataClass1.dbml里声明的 DataClasses1DataContext da = new DataClasses1DataContext(); try { //这里的LINQ查询语句和SQL里有一点点差别,具体的可以上网搜索 var query = from s in da.sale_item where s.unit_price > 2000 select s; Console.WriteLine(); Console.WriteLine("查询结果"); //查询语句返回的是一个集合,如果要查看里面的内容,必须要用foreach来循环. foreach (sale_item s in query) { Console.WriteLine(s.order_no + " " + s.prod_no + " " + s.qty + " " + s.unit_price); } //以上是查询语句及结果 //向数据库插入数据 customer cus = new customer(); cus.cust_no = "C1111"; cus.cust_name = "ABCDEFG"; cus.tel_no = "12345678"; cus.zip = "100000"; cus.addr = "ABCDEFG"; //这两句话有点像以前学过的事务,只有在添加完成之后才会写入数据库 da.customer.InsertOnSubmit(cus); da.SubmitChanges(); Console.WriteLine(); Console.WriteLine("插入数据后的执行结果"); var query2 = from c in da.customer select c; foreach (customer c in query2) { Console.WriteLine(c.cust_no + " " + c.cust_name + " " + c.addr + " " + c.tel_no + " " + c.zip); } //修改数据库的数据 var result = from c in da.customer where c.cust_no == "C1111" select c; foreach (customer c in result) { c.cust_name = "GFEDCBA"; c.tel_no = "87654321"; cus.zip = "999999"; cus.addr = "GFEDCBA"; } da.SubmitChanges(); Console.WriteLine(); Console.WriteLine("修改数据后的执行结果"); query2 = from c in da.customer select c; foreach (customer c in query2) { Console.WriteLine(c.cust_no + " " + c.cust_name + " " + c.addr + " " + c.tel_no + " " + c.zip); } //删除数据 var result2 = from c in da.customer where c.cust_no == "C1111" select c; foreach (customer c in result2) { da.customer.DeleteOnSubmit(c); } da.SubmitChanges(); Console.WriteLine(); Console.WriteLine("删除数据后的执行结果"); query2 = from c in da.customer select c; foreach (customer c in query2) { Console.WriteLine(c.cust_no + " " + c.cust_name + " " + c.addr + " " + c.tel_no + " " + c.zip); } } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } } } }
执行结果如下: