自從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
比較用功的讀者可能會發現一件事,上面的程式碼,並沒有開啟連線(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
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。