Linq查詢Access數(shù)據(jù)文件淺談
在向大家詳細(xì)介紹Linq查詢Access數(shù)據(jù)文件之前,首先讓大家了解下Linq核心的組成部分,然后全面介紹Linq查詢Access數(shù)據(jù)文件。
Linq核心的組成部分有LINQ to SQL, LINQ to DataSet, LINQ to Entities和LINQ to XML,根據(jù)Linq對(duì)于其他的集成很快會(huì)由微軟或第三方實(shí)現(xiàn),而改技術(shù)對(duì)于Access數(shù)據(jù)庫(kù)的支持并沒(méi)有像SQL Server那么友好,今天嘗試用Linq查詢Access數(shù)據(jù)文件時(shí)遇到了不少麻煩,在網(wǎng)上搜索后發(fā)現(xiàn)很多朋友都遇到了相同的問(wèn)題,經(jīng)過(guò)反復(fù)的嘗試,終于初步完成了Access的查詢。
下面是實(shí)現(xiàn)步驟:
1.準(zhǔn)備:用Access2007建立一個(gè)users.mdb文件,里面定義一個(gè)users表包括了以下三個(gè)字段——ID(int),Name(文本),Password(文本)。
2.新建一個(gè)控制臺(tái)程序后,導(dǎo)入改數(shù)據(jù)連接,VS2008會(huì)自動(dòng)的生成與數(shù)據(jù)表對(duì)應(yīng)的強(qiáng)類型數(shù)據(jù)集并且完成相應(yīng)的配置文件,其中關(guān)鍵的配置代碼如下:
- ......
- <connectionStrings>
- <add name="Chp.Properties.Settings.usersConnectionString"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;- Data Source=|DataDirectory|\users.accdb;Persist Security Info=True"
- providerName="System.Data.OleDb" />
- < SPAN>connectionStrings>
- ......
3.實(shí)現(xiàn)代碼
- //定義相關(guān)的DataSet和TableAdapter
- usersDataSet uDS = new usersDataSet();
- usersTableAdapter uTA = new usersTableAdapter();
- usersDataSet.usersDataTable uTable = new usersDataSet.usersDataTable();
- uTA.ClearBeforeFill=true;
- uTA.Fill(uTable);
- ......
- //通過(guò)LinQ查詢users表中用戶名為需要查詢的信息,這里AsEnumerable()是必須的
- //而u.Field<string>("Name")=="......"的意思是判斷是否為需要查詢的類型為string的Name字段
- var users = (from u in uTable.AsEnumerable()
- where u.Field<string>("Name")=="......"
- select u).First();
- ......
- //打印查詢到的Password
- Console.WriteLine("Password:{0}", users.Field<string>("Password") );
總結(jié):其實(shí)這里的Linq查詢Access數(shù)據(jù)文件主要還是通過(guò)LINQ to DataSet實(shí)現(xiàn)和完成的,但是從實(shí)現(xiàn)方式上又是按照了ORM的模式來(lái)執(zhí)行的,不得不說(shuō)的是Linq為數(shù)據(jù)的查詢提供了極大的便利,同時(shí)也簡(jiǎn)化了數(shù)據(jù)的操作,開(kāi)始明白微軟為解決Data!=Object的意圖了!
【編輯推薦】