用VS2005開發ASP.NET 2.0資料庫程式

來源:互聯網
上載者:User
asp.net|程式|資料|資料庫 一、 簡介

  在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。)不管使用哪一種方式來訪問資料,最終的結果,如在一使用者瀏覽器中所見的,皆是相同的。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.