歡迎您光臨本站 註冊首頁

學學Linq to DataSet 之Access查詢(菜鳥必看)

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
    使用 LINQ to DataSet 可以更快更容易地查詢在 DataSet 對象中緩存的數據.具體而言,通過使開發人員能夠使用編程語言本身而不是通過使用單獨的查詢語言來編寫查詢,LINQ to DataSet 可以簡化查詢.

Linq核心的組成部分有LINQ to SQL, LINQ to DataSet, LINQ to Entities和LINQ to XML,根據Linq對於其他的集成很快會由微軟或第三方實現,而改技術對於Access資料庫的支持並沒有像SQL Server那麼友好,今天嘗試用Linq查詢Access數據文件時遇到了不少麻煩,在網上搜索后發現很多朋友都遇到了相同的問題,經過反覆的嘗試,終於初步完成了Access的查詢.
 
  下面是實現步驟:
 
  1.準備: 用Access2007建立一個users.mdb文件,裡面定義一個users表包括了以下三個欄位——ID(int),Name(文本),Password(文本).
 
  2.新建一個控制台程序后,導入改數據連接,VS2008會自動的生成與數據表對應的強類型數據集並且完成相應的配置文件,其中關鍵的配置代碼如下:
<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" />
</connectionStrings>

  3.實現代碼
//定義相關的DataSet和TableAdapter
usersDataSet uDS = new usersDataSet();
usersTableAdapter uTA = new usersTableAdapter();
usersDataSet.usersDataTable uTable = new usersDataSet.usersDataTable();
uTA.ClearBeforeFill=true;
uTA.Fill(uTable);

//通過LinQ查詢users表中用戶名為需要查詢的信息,這裡AsEnumerable()是必須的
//而u.Field("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("Password") );

  總結:其實這裡的Linq查詢Access主要還是通過LINQ to DataSet實現和完成的,但是從實現方式上又是按照了ORM的模式來執行的,不得不說的是Linq為數據的查詢提供了極大的便利,同時也簡化了數據的操作,開始明白微軟為解決Data!=Object的意圖了!


[火星人 ] 學學Linq to DataSet 之Access查詢(菜鳥必看)已經有733次圍觀

http://coctec.com/docs/linux/show-post-58701.html