LINQ運算元據庫

2021-04-28 12:15:50 字數 3051 閱讀 6389

c#3.0新語特性和改進,這些新特性在我們編寫程式時為我們提供了非常大的幫助。從這篇開始,我們開始一起來**linq。

linq是language integrated query的簡稱,它是整合在.net程式語言中的一種特性。已成為程式語言的乙個組成部分,在編寫程式時可以得到很好的編譯時語法檢查,豐富的元資料,智慧型感知、靜態型別等強型別語言的好處。並且它同時還使得查詢可以方便地對記憶體中的資訊進行查詢而不僅僅只是外部資料來源。

linq定義了一組標準查詢操作符用於在所有基於.net平台的程式語言中更加直接地宣告跨越、過濾和投射操作的統一方式,標準查詢操作符允許查詢作用於所有基於ienumerable介面的源,並且它還允許適合於目標域或技術的第三方特定域操作符來擴大標準查詢操作符集,更重要的是,第三方操作符可以用它們自己的提供附加服務的實現來自由地替換標準查詢操作符,根據linq模式的習俗,這些查詢喜歡採用與標準查詢操作符相同的語言整合和工具支援。

linq包括五個部分:linq to objects、linq to datasets、linq to sql、linq to entities、linq to xml。

linq to sql全稱基於關係資料的.net語言整合查詢,用於以物件形式管理關係資料,並提供了豐富的查詢功能。其建立於公共語言型別系統中的基於sql的模式定義的整合之上,當保持關係型模型表達能力和對底層儲存的直接查詢評測的效能時,這個整合在關係型資料之上提供強型別。

linq to xml在system.xml.linq命名空間下實現對xml的操作。採用高效、易用、記憶體中的xml工具在宿主程式語言中提供xpath/xquery功能等。

說了這麼多,我們還是用乙個簡單的例項說明一下linq帶來的體驗。

第一步:建立dbml(database mark language。資料庫描述語言,是一種xml格式的文件,用來描述資料庫)檔案,以northwind資料庫為例,上述customers類被對映成乙個表,對應資料庫中的 customers表

第二步:建立乙個asp.net頁面,在頁面上加入乙個gridview控制項

第三步:編寫**進行資料繫結

四步:執行顯示結果。

linq是在ado.net之上的,那麼在將來它會代替ado.net嗎?

在大型專案中使用linq,它的效率如何呢?

接下來,我們開始從linq語句入手,來全面了解一下linq,就從最簡單的where說起吧,這個在編寫程式中也最為常用。

適用場景:實現過濾,查詢等功能。

說明:與sql命令中的where作用相似,都是起到範圍限定也就是過濾作用的,而判斷條件就是它後面所接的子句。

where操作包括3種形式,分別為簡單形式、關係條件形式、first()形式。下面分別用例項舉例下:

var q =

from c in db.customers

where c.city == "london"

select c;

var q =

from e in db.employees

where e.hiredate >= new

datetime(1994, 1, 1)

select e;

var q =

from p in db.products

where p.unitsinstock <= p.reorderlevel && !p.discontinued

select p;

var q =

from p in db.products

where p.unitprice > 10m || p.discontinued

select p;

var q =

db.products.where(p=>p.unitprice > 10m).where(p=>p.discontinued);

返回集合中的乙個元素,其實質就是在sql語句中加top (1)

shipper shipper = db.shippers.first();
customer cust = db.customers.first(c => c.customerid == "bonap");
order ord = db.orders.first(o => o.freight > 10.00m);

插入:dataclassesdatacontext db = new dataclassesdatacontext(linqsystem.linqdbconnectionstring);

aa a = new aa();

a.sname = "new role" + datetime.now.toshortdatestring();//新增欄位sname的值

db.aa.insertonsubmit(a);

db.submitchanges();

更新:dataclassesdatacontext db = new dataclassesdatacontext(linqsystem.linqdbconnectionstring);

var result = from u in db.aa where u.id == 20 select u;

foreach (var r in result)

db.submitchanges();

刪除:dataclassesdatacontext db = new dataclassesdatacontext(linqsystem.linqdbconnectionstring);

var result = from u in db.aa where u.id == 20 select u;

//aa a = new aa();

//foreach (var r in result)

//db.aa.deleteallonsubmit(result);//刪除編號為20.一行的值

db.submitchanges();

我們來總體看看linq架構

在.net3.5下,微軟為我們提供了一些命名空間

運算元據庫

python importmysqldb defmydbtest conn mysqldb.connect host localhost user root passwd sa db b4img charset utf8 cursor conn.cursor sql select from imag...

運算元據庫

2.localhost 的位址 檢視 一般位於c windows system32 driver etc下,一般在最後有這麼一行 127.0.0.1 localhost 資料庫操作方法 鏈結資料庫 建立資料庫表 資料庫插入操作 資料庫查詢操作 後記 try 使用 fetchone 方法獲取一條資料 ...

運算元據庫

是選擇乙個 是可選引數 新建資料庫 create if not exists db name default character set charset name 檢視當前伺服器下的資料庫列表 show like pattern where expr 檢視警告資訊 show warnings 修改資...