用VS2005開發ASP.NET 2.0數據庫程序

  一、 簡介

  在2005年11月7日,微軟正式發行了.NET 2.0(包括ASP.NET 2.0),Visual Studio 2005和SQL Server 2005。所有這些部件均被設計爲可並肩獨立工作。也就是說,ASP.NET版本1.x和版本2.0可以安裝在同一臺機器上;你可以既有Visual Studio.NET 2002/2003和Visual Studio 2005,同時又有SQL Server 2000和SQL Server 2005。而且,微軟還在發行Visual Studio 2005和SQL Server 2005的一個 Express式的SKU。注意,該Express版並不擁有專業版所有的特徵。

  2.0除了支持1.x風格的數據存取外,自身也包括一些新的數據源控件-它們使得訪問和修改數據庫數據極爲輕鬆。使用這些數據源控件時,你只需簡單地添加該控件到ASP.NET頁面並通過這些控件的屬性來配置連接串和SQL查詢即可。然後,通過把數據Web控件的DataSourceID屬性設置爲數據源控件的ID,該數據源控件就能被綁定到一個數據Web控件(如GridView)上。現今,必須靠編寫代碼來創建連接,創建命令,指定SQL查詢,檢索一個DataReader或DataSet,並且把它綁定到數據Web控件的日子已經過去了。這些步驟能夠通過使用聲明性數據源控件來代替。(當然,你還能通過使用你的1.x代碼中的熟悉的步驟編程地存取數據。)

  在本文中我們將看一下怎樣連接和顯示來自一ASP.NET 2.0數據庫的數據。具體地說,我們將討論怎樣使用編程和聲明性方法來存取數據,以及分析通過GridView控件來顯示數據的基本操作。

  二、 在Visual Studio 2005中操作數據庫

  當你安裝Visual Studio 2005的任何版本時,你總是被詢問是否你也想安裝SQL Server 2005 Express版本。如果你選擇Yes,這將安裝你的開發包中的SQL Server 2005 Express版本-注意,在此你正在安裝Visual Studio 2005!(SQL Server 2005 Express版本可以與SQL Server的其它版本一起安裝,包括SQL Server 2000和SQL Server 2005的其它版本。)

  如果你在當前工程中使用SQL Server 2000,那麼你可以通過企業管理器來以最舒適的方式操作數據庫。儘管你仍能使用企業管理器來操作SQL Server 2000,或使用SQL Server 2005的管理Studio來操作你的SQL Server 2005數據庫;但是,你也能通過Visual Studio 2005的數據連接來管理這些數據庫。我提及這些是因爲對於SQL Server 2005 Express版本來說,不存在一個象SQL Server 2000的企業管理器或SQL Server 2005的管理 Studio這樣的GUI工具;代之的是,你必須通過Visual Studio 2005來創建和管理你的SQL Server 2005 Express版本數據庫。

  提示 管理SQL Server 2005 Express版本數據庫

  如果你有任何其它除 Express以外的SQL Server 2005版本,你可以在你的機器上安裝客戶端工具,它包括管理Studio-管理SQL Server 2005數據庫的GUI工具。如果你安裝了這個工具,你還可以使用它來管理SQL Server 2005 Express版本數據庫。
                 
  爲了通過Visual Studio 2005來管理一個數據庫,請選擇到Server Explorer;在其上,你將找到一個數據連接結點(見上圖的快照)。你可以通過在數據連接結點上單擊鼠標右鍵來添加新的數據庫連接並且選擇"Add Connection"。這將會調出一個對話框提示你一些信息,如數據庫服務器、認證信息、使用什麼數據庫等。如果你在自己的機器上安裝了SQL Server 2005 Express版本,那麼即缺省地通過使用名爲SQL Express的實例安裝了這個數據庫。因此,要連接到的服務名將是YourMachineName/SQL Express或./SQL Express。除了連接到一個現有數據庫外,你還可以通過在數據連接結點上單擊鼠標右鍵並且選擇創建新的SQL Server數據庫來創建一個新的數據庫。

  一旦一個數據庫被添加到該數據連接選項卡上,你就可以通過適當的文件夾來添加、刪除或修改數據表,存儲過程,視圖等。爲了創建一新的數據表或存儲過程,右擊適當的文件夾並且選擇"Add New X"菜單選項;爲了修改一現有數據表、存儲過程或視圖,雙擊之即可。這將把它們調用到Visual Studio中-在此你可以據需要修改它。你也可以觀察和修改在單個數據表中的數據-這是通過右擊一個數據表名並且選擇"顯示數據表數據"來實現的。

  三、 添加一數據庫到App_Data文件夾

  除了通過數據連接選擇卡添加現有數據庫外,你還可以添加一個站點特定的數據庫到該網站的App_Data文件夾下。App_Data是一新的,保留在ASP.NET 2.0中的文件夾-它被設計來存儲數據有關的內容,包括SQL數據庫文件(.mdf文件)、Access數據庫文件(.mdb文件)、XML文件等。從一個ASP.NET網站工程,你可以輕鬆地創建並且添加一新的SQL Server 2005 Express數據庫到你的工程-通過右擊Solution Explorer中的App_Data文件夾並且選擇"Add New Item"。然後,從"Add New Item"對話框(顯示如下)中,選擇添加一新的SQL數據庫。
                     
  如果你想跟隨本文的步驟,那麼請在App_Data文件夾下創建一個稱爲Customers.mdf的SQL Server 2005 Express數據庫。然後,添加一個數據表到這個稱爲Customers的數據庫-用下面字段列:CustomerID(一個自動增加的主鍵字段),Name,City,State和ZipCode。然後,通過VS 2005添加一些記錄到這個數據表。

  另外,你還能添加現有Access數據庫文件甚至SQL Server 2000數據庫文件。(注意:爲了添加一現有SQL Server 2000 .mdf文件,你將需要確定它是第一次從企業管理器上分離;爲此,在企業管理器上右擊數據庫名字,再選擇"All Tasks"並且選擇"Detach數據庫"。一旦你分離開該數據庫並且把它添加到ASP.NET 2.0工程,你就可以通過企業管理器重新依附它。)
  四、 把SqlDataSource控件連接到數據庫

  現在,既然我們看到了怎麼創建並且通過Visual Studio的接口來使用數據庫;下面,讓我們把注意力轉到從一個ASP.NET 2.0 web頁面訪問和顯示來自一數據庫的數據上。ASP.NET 2.0包括了幾個新的數據源控件-它們的唯一目的是提供到數據的聲明性存取。共有五個內置的數據源控件-它們都能夠在Visual Studio中的工具箱的"數據"部分找到(請見下邊的屏幕快照)。
                     
  ·SqlDataSource-用於檢索和修改來自於一個關係數據庫的數據。這裏的"Sql"並不意味着這種數據源只與微軟SQL Server一起工作;而是可以與其它任何一種關係數據庫一起工作:SQL Server,Access,Oracle,等等。如果你在連接到一個SQL Server數據庫,那麼控件將會非常聰明地在內部啓用SqlClient類。

  ·AccessDataSource-用於檢索和修改來自於一個Access數據庫文件的數據。你可能想知道,如果SqlDataSource能夠與Access數據庫文件一起工作,那麼爲什麼還存在這個控件呢?其實,這個Access數據源控件使得你更容易地連接到一個Access數據庫-你只要指定到Access數據庫的.mdb文件的路徑即可。注意在使用SqlDataSource時,你需要使用一完全限定的指定數據提供者的連接串。

  ·ObjectDataSource-用於通過一個商業對象來檢索和修改數據。理想地,你的ASP.NET應用程序包括一組類-它形成中間層(而不是讓ASP.NET頁直接操作數據庫)。如果你有如此的結構,那麼可以使用ObjectDataSource來查詢中間層。

  ·XmlDataSource-用於檢索來自一XML文件的數據。

  ·SiteMapDataSource-用於提供只讀存取定義在站點地圖中的站點結構。這個控件在當你想要在一個TreeView或Menu控件中顯示一個站點的結構時使用。

  在本文中,我們將只討論Sql數據源控件,並且僅分析其基本功能。

  首先,讓我們添加一個Sql數據源控件到你的ASP.NET頁面。從設計視圖中,Sql數據源控件包含一個"靈敏標籤"-它列舉出它的常用功能。該"Configure Data Source"靈敏標籤鏈接將激活一個嚮導-它將一步步引導你通過整個的配置數據源的過程。這個嚮導主要有三個步驟(和一個可選的"子步驟"):

  1. 選擇你的數據連接-在第一步中,我們需要指定連接到什麼數據庫。這個屏幕包含在App_Data文件夾中數據庫的一個下拉列表和在數據連接選項卡中的一個下拉列表。還有一個"New Connection"按鈕-你可以點擊它,如果你想要連接到一個不在這些位置之一中的數據庫。如果你繼續下去,可以從下拉列表框中選擇Customers.mdf選項。

  a) 子步驟:如果這是你添加連接的第一次,你將會被提示是否你想要把連接串保存到Web.config之中;而且如果這樣的話,應該是連接串的名字。如果你繼續下去,我選擇用名字CustomersConnectionString把連接串保存到Web.config中。

  2. 設置Select語句-下一步是指定你想要返回什麼記錄,應用什麼樣的條件語句以及返回數據的排序順序。爲此,你可以通過使用嚮導來選擇一個數據表或視圖並且選擇返回哪一列,或你可以手工地輸入一個SELECT語句。無論哪一種方法,都是讓Sql數據源控件返回來自Customers數據表的所有的列-換句話說,讓它實現"SELECT * FROM Customers"。

  3. 查詢測試-你可以針對數據庫運行你的SELECT查詢以得到返回數據的一個預覽。請自由地點擊"Test查詢"按鈕;你應該看見所有的來自該Customers數據表的所有記錄。

  一旦你配置好SqlDataSource,請拿出一點時間看一下Source視圖並且檢查一下爲Sql數據源控件所使用的聲明性標記:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CustomersConnectionString %>"
SelectCommand="SELECT * FROM [Customers]">
</asp:SqlDataSource>

  有幾點要注意:首先,ConnectionString屬性使用了新的句法<%$ ... %>。這個句法從Web.config文件中檢索ConnectionStrings節的值的CustomersConnectionString值。換句話說,它從Customers數據庫中獲取連接串-該串是我們在Sql數據源控件的嚮導的子步驟中保存下來的;其次,SELECT查詢語句是在控件的SelectCommand屬性中指定的。

  這些數據源控件其自身只與數據一起工作。他們不顯示數據。如果你通過你的瀏覽器訪問這個ASP.NET頁面,你將發現沒有產生輸出。爲了觀察由我們剛纔創建的Sql數據源控件所返回的數據,我們需要添加一個數據Web控件。對於本文來說,讓我們使用GridView控件-你也可以在工具箱的"數據"節中找到它。該GridView是ASP.NET 1.x的DataGrid控件的"老大哥"-它提供了一些新的特性。在本文中,我們只分析到GridView的簡單的數據綁定。

  現在,我們把一個GridView控件拖動到你的ASP.NET頁面上。從設計視圖中,該GridView的靈敏標籤包括一個"Choose Data Source"選項並且有一個下拉列表的所有的數據源控件在該頁面上。把這個下拉列表設置爲SqlDataSource1-即是我們剛添加的Sql數據源控件的ID。一旦做完這些,該GridView將自動地有一個BoundFields添加到它上面-對於由數據源所返回的每一列(該GridView的BoundField等價於DataGrid中的BoundColumn)。通過GridView的靈敏標籤來設置"Choose Data Source"下拉列表就可以把GridView的DataSourceID屬性設置爲所選擇數據源控件的ID。

  就這麼多,不需要寫一句代碼!下面是通過一瀏覽器觀看該GridView時的一個屏幕快照。

                     
  通過使用GridView和Sql數據源控件,我們就能夠在30秒內從一個空白頁轉到一個顯示數據庫數據表的內容的頁面。事實上,我們可以在另一個30秒內完成把分頁、雙向排序、刪除和編輯支持添加到該GridView上,現在且不多談!)
 五、 編程連接到一數據庫

  如我們前面所見,使用一個SqlDataSource檢索信息非常快捷,但是如果你想要編程地存取數據又會怎樣呢?或者,也許你已經有了現成的代碼-該代碼將取得你想要的精確數據並且據需要進行管理;並且一旦完成,即修改你將要在一個GridView中所顯示的數據。沒有問題,你可以就象在1.x中一樣地在2.0中存取數據-通過創建一個到數據庫的連接,創建一個命令,指定查詢,填充一個DataReader或DataSet,然後使用該控件的DataSource屬性和DataBind()方法把結果綁定到數據Web控件。

  下列代碼顯示出一個ASP.NET頁面的Page_Load事件處理器-它編程地把Customers數據庫數據表的內容綁定到GridView控件gvCustomers上:

Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
 If Not Page.IsPostBack Then
  'Start by determining the connection string value
  Dim connString As String = ConfigurationManager.ConnectionStrings(connStringName).ConnectionString
  '創建一個SqlConnection實例
  Using myConnection As New SqlConnection(connString)
   '指定SQL查詢
   Const sql As String = "SELECT * FROM Customers"
   '創建一個SqlCommand實例
   Dim myCommand As New SqlCommand(sql, myConnection)
   '取回一個DataSet
   Dim myDataSet As New DataSet
   '創建一個SqlDataAdapter查詢
   Dim myAdapter As New SqlDataAdapter(myCommand)
   myAdapter.Fill(myDataSet)
   '把DataSet綁定到GridView
   gvCustomers.DataSource = myDataSet
   gvCustomers.DataBind()
   '關閉連接
   myConnection.Close()
  End Using
 End If
End Sub

  在此,要注意幾點:爲了取得連接串,我們可以參考Web.config中的連接串設置-使用句法爲
ConfigurationManager.ConnectionStrings(connStringName).ConnectionString。其中,connStringName的值應該是在Sql數據源控件嚮導(CustomersConnectionString)的子步驟中指定的值。另外注意,Visual Basic 8(2.0中使用的VB版本)現在支持Using關鍵字-這是在前面的版本中僅適於C#的一個語言特點。

  編程地存取數據和輸出結果等同於使用Sql數據源控件的情況。

  六、 結論

  在本文中,我們分析了在Visual Studio 2005中使用ASP.NET 2.0數據庫的情形。我們討論了怎樣通過Visual Studio管理數據庫,以及怎樣通過App_Data文件夾來添加網站特定的數據庫。最後,我們分析了怎樣使用Sql數據源控件和編程的方式來存取數據。當使用一個數據源控件時,通過設置GridView的DataSourceID屬性來把數據綁到一個GridView控件上;當編程地訪問該數據時,通過把數據賦值給GridView的DataSource屬性和調用GridView的DataBind()方法來實現把數據綁定到GridView。(後一種方法遵循在ASP.NET 1.x中使用的模式來綁定數據到一個DataGrid。)不管使用哪一種方式來訪問數據,最終的結果,如在一用戶瀏覽器中所見的,皆是相同的。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章