經(jīng)驗分享:ASP.NET數(shù)據(jù)庫應用分析
ASP.NET數(shù)據(jù)庫在使用中有很多的優(yōu)勢,這些已經(jīng)贏得了程序員們廣泛的青睞?,F(xiàn)在,我們就具體來看看ASP.NET數(shù)據(jù)庫的應用。
對于一個熟練的ASP開發(fā)者來說,ASP.NET數(shù)據(jù)庫的應用不但簡單,而且功能還很強大。很多Web開發(fā)者就是因為這一點而選擇ASP的,至今為止,他們一直認為ASP.NET數(shù)據(jù)庫功能還不錯,完全可以滿足開發(fā)要求。
一、名字空間NameSpace
要使用ASP.NET數(shù)據(jù)庫的功能,不可能離開名字空間NameSpace的使用。什么是名字空間,簡單一點,名字空間就像Delphi中的控件,你必須將它們放入你的Form才能使用它們,同樣,如果你要使用ASP.NET數(shù)據(jù)庫的功能,你就必須先引用相應的名字空間。ASP.NET數(shù)據(jù)庫的名字空間有這些:
- <%@ Import NameSpace="System.Data.SQL"%>
- <Script Language="VB" RunAt="Server">
- Function createdatasource()
- Dim conn AS SQLConnection
- Dim connstr As String
- Dim strsql AS String
- Dim sqlCmd AS SQLDataSetCommand
- Dim ds AS New DataSet
- '連接數(shù)據(jù)庫
- connstr=
- "Server=NHGA-D36KQ26TWB;DataBase=NorthWind; Pwd=;Uid=sa"
- conn= New SQLConnection(connstr)
- 'SQL語句
- strsql="Select * from Products "
- '建立DataSet
- sqlCmd=New SQLDataSetCommand(strsql,conn)
- '將表Products加入DataSet
- sqlCmd.FillDataset(ds,"Products")
- return ds.Tables("Products").DefaultView
- end Function
- '綁定數(shù)據(jù)函數(shù)
- sub BindGrid()
- DataGrid1.DataSource=CreateDataSource()
- DataGrid1.DataBind()
- End Sub
- '頁面登錄
- Sub Page_Load(Source AS Object,E AS EventArgs)
- CreatedataSource()
- BindGrid()
- End Sub
- </Script>
- <html>
- <head>
- <meta http-equiv="Content-Language" content="zh-cn">
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
- <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
- <meta name="ProgId" content="FrontPage.Editor.Document">
- <title>ASP.NET數(shù)據(jù)庫使用</title>
- </head>
- <body>
- <Form RunAt="Server">
- <ASP:DataGrid id="DataGrid1" RunAt="Server" />
- </Form>
- </body>
- </html>
以上是一個最簡單的ASP.NET數(shù)據(jù)庫應用,唯一功能就是列出NorthWind數(shù)據(jù)庫Products表的所有記錄??梢院虯SP比較一下,發(fā)現(xiàn)這個程序是如此的簡單。為了更好的了解數(shù)據(jù)庫應用的基本框架,我們來看看這個數(shù)據(jù)庫應用具體是怎樣實現(xiàn)的。
頁面登錄時,調(diào)用CreateDataSource和BindGrid函數(shù),CreateDataSource函數(shù)連接數(shù)據(jù)庫并且建立DataView,BindGrid函數(shù)將數(shù)據(jù)綁定到DataGrid。有關(guān)這兩個函數(shù)的具體語句,代碼中均有說明。 #p#
二、基本數(shù)據(jù)庫應用
有了以上模板,ASP.NET數(shù)據(jù)庫應用的基本框架已經(jīng)有了,現(xiàn)在,我們需要在這個框架上作一些修改,使其更加符合我們的實際使用要求。
1.界面設(shè)置
如果我們呈現(xiàn)給訪問者的數(shù)據(jù)全部使用以上模板的界面,也未嘗不可。但是,誰不希望自己的頁面美觀一點呢?還是以上代碼,只是修改DataGrid部分,數(shù)據(jù)庫部分不變。將程序中:
- <ASP:DataGrid id="DataGrid1" RunAt="Server" />
修改為:
- <ASP:DataGrid id="DataGrid1" RunAt="Server"
- BorderColor="black"
- BorderWidth="1"
- CellPadding="3"
- BackImageUrl=""
- BackColor="#FFCCCC"
- ForeColor="Black"
- HeaderStyle-BackColor="#CCCCFF"
- HeaderStyle-ForeColor="Blue"
- AlternatingItemStyle-BackColor="#F3f3f3"
- >
- </ASP:DataGrid>
在這個界面里面,我們設(shè)置了字體,每行背景,DataGrid背景等,我們現(xiàn)在一一分析:
- BorderColor="black"
- BorderWidth="1"
- CellPadding="3"
以上語句設(shè)置DataGrid的邊框為黑色;邊框粗細為1;單元格跨距為3。
- BackImageUrl="apictue.gif"
- BackColor="#FFCCCC"
- ForeColor="Black"
以上語句設(shè)置DataGrid的背景圖象為apicture.gif;背景顏色為#FFFFCC;字體顏色為黑色。
- HeaderStyle-BackColor="#CCCCFF"
- HeaderStyle-ForeColor="Blue"
以上語句設(shè)置DataGrid的Header屬性,背景顏色為#CCCCFF;字體顏色為藍色。
- AlternatingItemStyle-BackColor="#F3f3f3"
以上語句設(shè)置DataGrid每一行交替背景顏色為F3F3F3;這一語句在ASP里面實現(xiàn)很繁瑣,在這里,一句就解決。
2.數(shù)據(jù)分頁
ASP里面的數(shù)據(jù)分頁實在繁瑣,不得不花很多精力去寫代碼。一些程序員就是因為這一點,如果數(shù)據(jù)不是太多干脆不分頁,勉強應付?,F(xiàn)在我們再也不要為數(shù)據(jù)分頁煩惱了,將一下代碼加入DataGrid設(shè)置:
- AllowPaging="True"
- PageSize="5"
- PagerStyle-HorizontalAlign="Right"
- PagerStyle-NextpageText="下一頁 >>"
- PagerStyle-PrevPageText="<< 上一頁"
這就是一個標準的數(shù)據(jù)分頁,是不是比ASP簡單得多?我們來仔細看一下代碼是怎樣的:
- AllowPaging="True"
以上代碼允許數(shù)據(jù)進行分頁,默認是False。所以,如果你要數(shù)據(jù)分頁,一定要加上這一句。
- PageSize="5"
PageSize和ASP中的一樣,表示每頁有多少記錄。
- PagerStyle-HorizontalAlign="Right"
以上語句表示分頁符在頁面的位置的右邊。
- PagerStyle-NextpageText="下一頁 >>"
- PagerStyle-PrevPageText="<< 上一頁"
以上語句表示用“下一頁”、“上一頁”作為分頁符號,如果不希望這樣,想直接用數(shù)字表示,去掉這兩句就可以了。
注意:與分頁有關(guān)的還有PageCount屬性,可以得到分頁的總數(shù)。
3.數(shù)據(jù)排序
數(shù)據(jù)排序不是在SQL語句里面就可以設(shè)定嗎,為什么還要專門來一個數(shù)據(jù)排序?SQL語句的數(shù)據(jù)排序只能服務(wù)器端設(shè)定,如果用戶希望按照自己的喜好排序怎么辦?ASP里面是沒有辦法解決的,現(xiàn)在,我們看看ASP.NET數(shù)據(jù)庫怎樣解決這個問題。
在DataGrid設(shè)置里面加入一下語句:
- AllowSorting="true"
- OnSortCommand="Sort_Grid"
***句表示DataGrid采用要求排序;第二句表示點擊排序以后的事件;我們來看看這個事件:
- Sub Sort_Grid(Sender As Object,E As DataGridSort CommandEventArgs)
- SortField=E.SortField
- DataGrid1.DataSource=CreateDataSource()
- DataGrid1.DataBind()
- End Sub
點擊排序以后,首先,設(shè)置排序字段為點擊的字段,如何重新顯示數(shù)據(jù)。
每一個字段名均是一個LinkButton(連接),點擊這個字段名,就可以按這個字段排序。需要注意的是,排序不是對當前頁排序,而是對整個DataGrid排序。
4.數(shù)據(jù)編輯
數(shù)據(jù)庫操作除了數(shù)據(jù)瀏覽,***部分其實就是對數(shù)據(jù)的處理(增加、修改、刪除)。數(shù)據(jù)處理,ASP.NET數(shù)據(jù)庫和ASP沒有太多的區(qū)別,我們看一個增加數(shù)據(jù)的例子就可以了解ASP.NET數(shù)據(jù)庫編輯的實現(xiàn)了。
- Sub InsertRec()
- Dim conn AS SQLConnection
- Dim connstr As String
- Dim sqlinsertcmd AS SQLCommand
- Dim sqlinsert AS String
- connstr="Server=NHGA-D36KQ26TWB;DataBase=My Base;Pwd=;Uid=sa"
- conn= New SQLConnection(connstr)
- sqlinsert="Insert Into MyTable(title,name,content)Values (@title,@name,@content)"
- sqlinsertcmd=New SQLCommand(sqlinsert,conn)
- sqlinsertcmd.parameters.Add(New SQLParameter("@title", SQLDataType.varchar,20))
- sqlinsertcmd.parameters.Add(New SQLParameter("@name", SQLDataType.varchar,20))
- sqlinsertcmd.parameters.Add(New SQLParameter ("@content", SQLDataType.varchar,20))
- sqlinsertcmd.parameters.item("@title").value="Test3"
- sqlinsertcmd.parameters.item("@name").value="Test3"
- sqlinsertcmd.parameters.item("@content").value="Test3"
- conn.open()
- sqlinsertcmd.execute()
- End Sub
上面代碼中,首先創(chuàng)建一個ASP.NET數(shù)據(jù)庫連接,然后建立了一個插入語句,此插入語句使用了以@開頭的參數(shù),這一點可能與ASP稍有差別。使用參數(shù)之前,必須先創(chuàng)建參數(shù),并要說明參數(shù)的數(shù)據(jù)類型。如何打開連接,執(zhí)行插入語句就可以了。
以上我們設(shè)計到了ASP.NET數(shù)據(jù)庫操作中常用的部分,基本可以實現(xiàn)我們一般編程要求。但是,如果要全面了解ASP.NET數(shù)據(jù)庫的功能,以上顯然是不夠的,這需要我們更加不斷地學習其他ASP.NET數(shù)據(jù)庫的知識,融會貫通。
【編輯推薦】