ASP.NET 2.0輕松實(shí)現數據庫應用開(kāi)發(fā)
前言:
第一次使用ASP.NET 2.0就被它強大的功能和超高的效率所吸引,原本繁雜的過(guò)程被簡(jiǎn)化到無(wú)法置信的容易,而且據微軟的所言12月中文版的VS2005正式版將給我們帶來(lái)更強勁的風(fēng)暴。對ASP.NET 2.0逐漸深入后,便產(chǎn)生了想把自己學(xué)習中發(fā)現的問(wèn)題和體會(huì )與大家交流,遂有此文。聲明:本文所有演示示例均基于Visual Web Developer 2005 Express Beta2,Visual Web Developer 2005 Express Edition Beta2 是一種簡(jiǎn)便的、易學(xué)易用的開(kāi)發(fā)工具,其重點(diǎn)專(zhuān)注于互聯(lián)網(wǎng)應用開(kāi)發(fā)。
1.ASP.NET 2.0數據庫開(kāi)發(fā)的新特性:
與以前的版本相比,ASP.NET 2.0加入了更多的特性,使得開(kāi)發(fā)人員工作效率、管理、擴展性和性能領(lǐng)域均有了大幅度的提高。
在開(kāi)發(fā)效率上,ASP.NET 2.0使得一個(gè)典型的WEB應用程序的代碼量基本上減少了70%,甚至在一些簡(jiǎn)單的程序中無(wú)須編寫(xiě)任何代碼就可以實(shí)現你所要求的功能,既所謂的"0代碼"。這是因為ASP.NET 2.0 將常用的 Web 任務(wù)封裝到應用程序服務(wù)和控件中,這些服務(wù)和控件可方便地在網(wǎng)站之間重用。利用這些基本生成塊,較之以前的版本,現在實(shí)現許多應用所需的自定義代碼要少得多。
同時(shí)在A(yíng)SP.NET 2.0 引入了許多新的服務(wù)器控件,能夠為數據訪(fǎng)問(wèn)、登錄安全、向導導航、菜單、樹(shù)視圖、門(mén)戶(hù)等提供功能強大的聲明性支持。這些控件中,許多都利用了 ASP.NET 的核心應用程序服務(wù),用于數據訪(fǎng)問(wèn)、成員資格與角色,以及個(gè)性化設置等方案。
2.0 版中的新增功能如下:
· 數據源控件 -- ASP.NET 2.0 引入了聲明性數據源控件,這些控件向頁(yè)上的數據綁定 UI 控件公開(kāi)來(lái)自后端存儲(例如 SQL 數據庫、中間層業(yè)務(wù)對象或 XML 文件)的數據。數據源控件還公開(kāi)諸如排序、分頁(yè)、緩存、更新、插入和刪除數據等功能,UI 控件能夠自動(dòng)利用這些功能而無(wú)需代碼。
· 新的數據綁定控件 -- 除 ASP.NET 1.x 版中的數據綁定控件外,ASP.NET 還包括諸如 GridView、DetailsView、FormView、TreeView 和 Menu 等新的數據綁定 UI 控件,可以自定義這些控件以各種格式顯示數據。GridView、DetailsView 和 FormView 控件還能自動(dòng)利用數據源功能,使得向數據驅動(dòng)頁(yè)添加排序、分頁(yè)和更新操作非常容易。
· 數據控件參數 -- 數據源能夠使用 ASP.NET 2.0 中新的數據控件參數對象從各種來(lái)源接受輸入參數。使用這些參數對象可以輕松地向參數化數據操作提供服務(wù)器控件屬性值、會(huì )話(huà)、應用程序、Cookie 和 querystring 字段以及用戶(hù)配置文件屬性。使用這些參數,只需很少的自定義代碼或無(wú)需自定義代碼就能支持篩選和主/詳細信息方案。
· 改進(jìn)的數據綁定語(yǔ)法 -- 對于在數據綁定模板中綁定控件的常見(jiàn)方案,ASP.NET 中的 DataBinder.Eval 數據綁定語(yǔ)法已得到簡(jiǎn)化。還可以在模板中將雙向數據綁定與控件屬性關(guān)聯(lián),以允許自動(dòng)將值傳遞給數據源更新、插入或刪除操作。對于分層的 XML 數據,ASP.NET 2.0 還包含一種基于 Xpath 的數據綁定語(yǔ)法。
· 使用 SQL Express 的本地文件數據庫 -- 為簡(jiǎn)化開(kāi)發(fā),ASP.NET 2.0 現在支持在應用程序中連接到作為本地文件的 SQL Express 數據庫的能力,從而消除僅為了執行開(kāi)發(fā)工作而向服務(wù)器提供數據庫的需要。當然,您仍然能夠連接到基于服務(wù)器的 SQL 數據庫。
下面是一些重要的數據綁定控件和數據源控件的詳細的介紹:
·GridView:
這是ASP.NET 2.0中的一個(gè)新的數據綁定控件,它是ASP.NET 1.x中的DataGrid控件的后續繼承,并且在其基礎上做了許多改進(jìn)。盡管在A(yíng)SP.NET 1.x中DataGrid控件已經(jīng)可以滿(mǎn)足開(kāi)發(fā)者通過(guò)代碼來(lái)處理一些操作,像排序,分頁(yè),編輯及刪除數據等。但是GridViwe控件綁定到數據源控件時(shí),它就可以自動(dòng)進(jìn)行排序,分頁(yè),編輯及刪除數據的一系列處理。在功能上GridViwe控件也超越了DataGrid控件,GridViwe控件可以支持多個(gè)關(guān)鍵字段,在UI界面上有了強大的用戶(hù)定制功能,而且它還給開(kāi)發(fā)者提供了一個(gè)新的取消和處理事件的模型。
·SqlDataSource:
SqlDataSource控件代表一個(gè)通過(guò)ADO.NET連接到SQL數據庫提供者的數據源控件。就像其他的數據源控件一樣,SqlDataSource控件可以被綁定到任何支持DataSourceID屬性的數據綁定控件上。同時(shí)SqlDataSource擁有自我描述的能力(例如選擇,插入,更新,刪除,排序等),以至數據綁定控件可以在這些能力被允許的情況下自動(dòng)的實(shí)現選擇,插入,更新,刪除,排序等過(guò)程。SqlDataSource控件可以讓你在創(chuàng )建數據庫連接和實(shí)現查詢(xún)時(shí)取代以前所需的大量ADO.NET代碼,這是因為這些數據的查詢(xún)操作已經(jīng)直接被指定為該數據源控件的一個(gè)屬性。因為數據的查詢(xún)依然存在于頁(yè)面的代碼中,有時(shí)候我們也稱(chēng)這是一種雙重模型。
SqlDataSource控件通常主要是針對一些不太需要查詢(xún)大量數據庫小型的和個(gè)人站點(diǎn),當我們進(jìn)行一個(gè)數據流量較大的網(wǎng)站開(kāi)發(fā),我們就必須使用后面的ObjectDataSource控件,這是一個(gè)綁定到中間層對象的針對大型企業(yè)開(kāi)發(fā)的數據源控件。
數據源控件
數據源控件沒(méi)有呈現形式,而是表示特定的后端數據存儲,例如數據庫、業(yè)務(wù)對象、XML 文件或 XML Web services。數據源控件還支持針對數據的豐富功能(例如排序、分頁(yè)、篩選、更新、刪除和插入),數據綁定 UI 控件能夠自動(dòng)使用這些功能。ASP.NET 2.0 包括以下現成的服務(wù)器控件:
| 名稱(chēng) | 說(shuō)明 |
| SqlDataSource | 支持綁定到 ADO.NET 提供程序(例如 Microsoft? SQL Server、OLEDB、ODBC 或 Oracle。)表示的 SQL 數據庫。 |
| ObjectDataSource | 支持綁定到中間層對象,例如數據訪(fǎng)問(wèn)層或業(yè)務(wù)組件。 |
| AccessDataSource | 支持綁定到 Microsoft? Access (Jet) 數據庫。 |
| SiteMapDataSource | 支持綁定到 ASP.NET 2.0 站點(diǎn)導航提供程序公開(kāi)的層次結構。 |
| XmlDataSource | 支持綁定到 XML 文件或文檔。 |
| 名稱(chēng) | 說(shuō)明 |
| GridView | 以網(wǎng)格格式呈現數據。此控件是 DataGrid 控件的演變形式,并且能夠自動(dòng)利用數據源功能。 |
| DetailsView | 在標簽/值對的表格中呈現單個(gè)數據項,類(lèi)似于 Microsoft? Access 中的窗體視圖。此控件也能自動(dòng)利用數據源功能。 |
| FormView | 在由自定義模板定義的窗體中一次呈現單個(gè)數據項。在標簽/值對的表格中呈現單個(gè)數據項,類(lèi)似于 Microsoft? Access 中的窗體視圖。此控件也能自動(dòng)利用數據源功能。 |
| TreeView | 在可展開(kāi)的節點(diǎn)的分層樹(shù)視圖中呈現數據。 |
| Menu | 在分層動(dòng)態(tài)菜單(包括彈出式菜單)中呈現數據. |

SqlDataSource控件的ConnectionString屬性指定一個(gè)數據庫連接字符串,SelectCommand屬性是指定執行檢索的數據庫命令。連接字符串可以在頁(yè)面代碼中直接指定,也可以采用一種新的表達式結構在Web.config.中檢索數據庫連接字符串。
第一步,在"工具箱"的"數據"項下拖拽一個(gè)"GridView"控件到主頁(yè)面上,放置鼠標到該控件上短暫的停留后,會(huì )出現一個(gè)小的標簽:

第二步,我們打開(kāi)下圖所示的"選擇數據源"的下拉列表:

第三步:如果你還沒(méi)有設置任何的SqlDataSource,可以選擇"新建數據源"選項。出現如下圖的界面后:
我們選擇"數據庫"作為我們的數據源。自動(dòng)生成一個(gè)ID為"SqlDataSource1"的SqlDataSource數據源控件。






<%@ Page Language="C#" %>
<html>
<head id="Head1" runat="server">
<title>GridView Bound Fields</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" DataSourceID="SqlDataSource1"AutoGenerateColumns="False" runat="server">
<Columns>
<asp:BoundField HeaderText="ID" DataField="au_id" ReadOnly="true" />
<asp:BoundField HeaderText="Last Name" DataField="au_lname" />
<asp:BoundField HeaderText="First Name" DataField="au_fname" />
<asp:BoundField HeaderText="Phone" DataField="phone" />
<asp:BoundField HeaderText="Address" DataField="address" />
<asp:BoundField HeaderText="City" DataField="city" />
<asp:BoundField HeaderText="State" DataField="state" />
<asp:BoundField HeaderText="Zip Code" DataField="zip" />
<asp:CheckBoxField HeaderText="Contract" DataField="contract" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT [au_id], [au_lname], [au_fname], [phone],[address],[city], [state], [zip], [contract] FROM [authors]" ConnectionString="<%$ ConnectionStrings:Pubs %>" />
</form>
</body>
</html><?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings/>
<connectionStrings>
<add name="Pubs" connectionString="Data Source=hoowoo;Initial Catalog=pubs;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="false"/>
<authentication mode="Windows"/>
</system.web>
</configuration>"<asp:GridView ID="GridView1" DataSourceID="SqlDataSource1"
AutoGenerateColumns="False" runat="server">""<Columns>
<asp:BoundField HeaderText="ID" DataField="au_id" ReadOnly="true" />
<asp:BoundField HeaderText="Last Name" DataField="au_lname" />
<asp:BoundField HeaderText="First Name" DataField="au_fname" />
<asp:BoundField HeaderText="Phone" DataField="phone" />
<asp:BoundField HeaderText="Address" DataField="address" />
<asp:BoundField HeaderText="City" DataField="city" />
<asp:BoundField HeaderText="State" DataField="state" />
<asp:BoundField HeaderText="Zip Code" DataField="zip" />
<asp:CheckBoxField HeaderText="Contract" DataField="contract" />
</Columns>"<asp:SqlDataSource ID="SqlDataSource1" runat="server"
SelectCommand="SELECT [au_id], [au_lname], [au_fname],
[phone],[address],[city], [state], [zip], [contract] FROM [authors]"
ConnectionString="<%$ ConnectionStrings:Pubs %>" /><connectionStrings>
<add name="Pubs" connectionString="Data Source=hoowoo;Initial Catalog=pubs;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
聯(lián)系客服