DataSet與ObjectDataSource #1,簡單的小範例

自從ASP.NET 2.0開始(VS 2005),作法有些改變。我們必須加入一個資料集(DataSet),然後透過 ObjectDataSource控制項來使用它。

這一部份原本打算在書本裡提及,但書本上限600頁(我最後寫到840幾頁,實在塞不下去了),因為成為遺珠。
先把一些範例公布在我的Blog上面,作為補償。


 

以前在ASP.NET 1.x版,搭配VS.NET 2003的時候,

就算要連結資料庫,都要拉進一個 SqlConnection的控制項到畫面裡頭。

那時要做 DataSet的步驟也差不多。

 

自從ASP.NET 2.0開始(VS 2005),作法有些改變。我們必須加入一個資料集(DataSet),然後透過 ObjectDataSource控制項來使用它。

 

這一部份原本打算在書本裡提及,但書本上限600頁(我最後寫到840幾頁,實在塞不下去了),因為成為遺珠。

先把一些範例公布在我的Blog上面,作為補償。

 

 

在ObjectDataSource這一部份,市面上的中文書,就屬 章立民老師在碁峰出版的那本書,最詳盡了。我在之前文章也有推薦過。

 

 

以下就是我的小範例 (DataSet_test.aspx),題目--- 計算 test這個資料表裡面的資料總筆數?

 

各位可以跟以前的程式做一個比對。這樣的寫法跟以前有何差異?

圖片一,首先「新增項目」,增加一個資料集(DataSet)。接下來就是一連串的精靈畫面,不用怕,跟著做。

 

圖片二,透過 ObjectDatasource控制項,我們可以自訂 TableAdapter。這個範例我們用簡單的SQL指令試試看就好。

 

因為ASP.NET 2.0以後(包含3.5版),市面上的書很少提起ADO.NET,很多初學者沒學過ASP或是.NET 1.x版,因此對於DataSet / DataAdapter完全沒概念。

以我為例,一路走來,對於版本每次的演化都有遇見。所以學起新東西還算快。

 

廣告一下,我的新書---ASP.NET專題實務(文魁出版)/  ASP.NET 4.0專題實務(松崗出版) 是目前ASP.NET 書籍中,

      少數有完整介紹ADO.NET與完整範例的書,各有一章)

 

 

 

完成上面的精靈畫面後,就會出現下面的畫面。

      就是把某一個Table常用的一些功能,事先做好一些函數備用。

      將來可以直接呼叫它,有點類似資料庫的Stored Procedure是事先寫好的SQL指令。

  

 P.S.   畫面右下方的SQL指令寫得很爛,千萬別模仿。   使用 *符號,效能都很差!

 

=====================================================================

完成上面的設定後,我們開始寫程式了。

HTML畫面很簡單,只有一個Button按鈕、文字輸入方塊(TextBox)而已。

這支程式比較特別的地方,是在「後置程式碼」的部份,請看下去。

     

 

 

各位看看底下的後置程式碼,

我們剛剛自訂的DataSet與 TableAdapter

還有剛剛設定好的函數 --  test_count(),已經跟VS 2008配合起來,

在 Intellisense裡面,會自動出現我們「事先設定好的函數名稱」

     

畫面上的Intellisense,還有 Delete / Fill / Insert / Update,這些都是ObjectDataSource事先完成的。

 

這樣做,有什麼優點呢?

舉例來說,在程式設計上,大家都很著重在寫程式,因此團隊裡面每個人對於SQL指令的用法都有差異,

不同的SQL指令,效率效率也差別很大。

以這個範例來說,要找出 test資料表的總筆數(共有幾筆資料)

  • 有人會透過SQL指令的 count() 來做。  Count(*) Count(欄位名稱) 這兩個寫法,效率就差很多~
  • 有人會執行 Select * from test,然後用程式去找結果,例如:DataReader的方法。
  • ......等等其他方法。

與其讓每一個人都用自己的方式來寫程式,

這個做法可以讓大家「共用」同一個函數來完成。換個角度來想,也是一種好處。

 

因此,整個程式變得很精簡。

完整程式碼如下:

'----自己寫的(宣告)----
Imports System
Imports System.Web.Configuration
Imports System.Data
Imports System.Data.SqlClient
'----自己寫的(宣告)----

 

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim Conn As New SqlConnection("資料庫的連結字串")

            Dim testAdapter As New DataSet1TableAdapters.testTableAdapter

            TextBox1.Text = testAdapter.test_count().ToString

    End Sub

 

您可以參閱這篇教學文章:

使用強型別(具型別,Strong-Typed / Strongly-Typed)設計DAL

http://weblogs.asp.net/scottgu/archive/2006/01/15/Building-a-DAL-using-Strongly-Typed-TableAdapters-and-DataTables-in-VS-2005-and-ASP.NET-2.0.aspx


 

 

比較用功的讀者可能會發現一件事,上面的程式碼,並沒有開啟連線(Conn.Open())、也沒有關閉連線(Conn.Close())?

想不到我竟然會犯了這麼大的錯誤?

NO~~~您錯了!!!!  

DataSet會透過 DataAdapter來執行SQL指令,透過 .Fill()與 .Update()來取出資料與回寫資料。

DataAdapter會在適當的時候,自動開啟、自動關閉資料庫的連線。所以我們不必手動處理之。

廣告一下,看吧!有學過 ADO.NET,真的不一樣喔!我的新書有加強這一部份,不會讓你失望!

    要自己寫 ADO,NET的程式,市面上的書,我寫的這一本算比較詳細......)

 

=====================================================================

完成後,執行結果如下。

 

 各位如果對於 VS 2005 / VS 2008幫我們完成的資料集(DataSet)有興趣的話,

可以到 /App_Code目錄底下找找看  .xsd檔案

是一個XML檔,裡面寫了每一個函數要執行的動作,很有參考價值喔。

 

 

 

本文提供範例下載,請看:DataSet與ObjectDataSource #2,範例下載

檔名 DataSet_test.aspx

 

相關文章:

ObjectDataSouce簡介Part1:兼具ADO.NET的自由與DataSouce的方便

ObjectDataSouce簡介Part 2:範例程式(含畫面設定錄影教學)

 

 
 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................   Google+   https://plus.google.com/100202398389206570368/posts ........

................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

*********************************************************************************************

*** 第一天 的 ASP.NET MVC線上課程 免費看(5.5小時)*** 

************************************************************(歡迎索取,免費申請)*****

 

ASP.NET遠距教學、線上課程(Web Form + MVC)第二門 課程「四折」-- 以MVC課程作為優惠。

第一天完整課程,提供 "完整" 試聽。  如不滿意 全額退費!

 

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

    MIS2000 Lab.  線上教學影片(YouTube) **免費觀賞**