经验分享:ASP.NET数据库应用分析
ASP.NET数据库在使用中有很多的优势,这些已经赢得了程序员们广泛的青睐。现在,我们就具体来看看ASP.NET数据库的应用。
对于一个熟练的ASP开发者来说,ASP.NET数据库的应用不但简单,而且功能还很强大。很多Web开发者就是因为这一点而选择ASP的,至今为止,他们一直认为ASP.NET数据库功能还不错,完全可以满足开发要求。
一、名字空间NameSpace
要使用ASP.NET数据库的功能,不可能离开名字空间NameSpace的使用。什么是名字空间,简单一点,名字空间就像Delphi中的控件,你必须将它们放入你的Form才能使用它们,同样,如果你要使用ASP.NET数据库的功能,你就必须先引用相应的名字空间。ASP.NET数据库的名字空间有这些:
<%@ 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 '连接数据库 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 '绑定数据函数 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数据库使用</title> </head> <body> <Form RunAt="Server"> <ASP:DataGrid id="DataGrid1" RunAt="Server" /> </Form> </body> </html>
以上是一个最简单的ASP.NET数据库应用,唯一功能就是列出NorthWind数据库Products表的所有记录。可以和ASP比较一下,发现这个程序是如此的简单。为了更好的了解数据库应用的基本框架,我们来看看这个数据库应用具体是怎样实现的。
页面登录时,调用CreateDataSource和BindGrid函数,CreateDataSource函数连接数据库并且建立DataView,BindGrid函数将数据绑定到DataGrid。有关这两个函数的具体语句,代码中均有说明。
二、基本数据库应用
有了以上模板,ASP.NET数据库应用的基本框架已经有了,现在,我们需要在这个框架上作一些修改,使其更加符合我们的实际使用要求。
1.界面设置
如果我们呈现给访问者的数据全部使用以上模板的界面,也未尝不可。但是,谁不希望自己的页面美观一点呢?还是以上代码,只是修改DataGrid部分,数据库部分不变。将程序中:
<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>
在这个界面里面,我们设置了字体,每行背景,DataGrid背景等,我们现在一一分析:
BorderColor="black" BorderWidth="1" CellPadding="3"
以上语句设置DataGrid的边框为黑色;边框粗细为1;单元格跨距为3。
BackImageUrl="apictue.gif" BackColor="#FFCCCC" ForeColor="Black"
以上语句设置DataGrid的背景图象为apicture.gif;背景颜色为#FFFFCC;字体颜色为黑色。
HeaderStyle-BackColor="#CCCCFF" HeaderStyle-ForeColor="Blue"
以上语句设置DataGrid的Header属性,背景颜色为#CCCCFF;字体颜色为蓝色。
AlternatingItemStyle-BackColor="#F3f3f3"
以上语句设置DataGrid每一行交替背景颜色为F3F3F3;这一语句在ASP里面实现很繁琐,在这里,一句就解决。
2.数据分页
ASP里面的数据分页实在繁琐,不得不花很多精力去写代码。一些程序员就是因为这一点,如果数据不是太多干脆不分页,勉强应付。现在我们再也不要为数据分页烦恼了,将一下代码加入DataGrid设置:
AllowPaging="True" PageSize="5" PagerStyle-HorizontalAlign="Right" PagerStyle-NextpageText="下一页 >>" PagerStyle-PrevPageText="<< 上一页"
这就是一个标准的数据分页,是不是比ASP简单得多?我们来仔细看一下代码是怎样的:
AllowPaging="True"
以上代码允许数据进行分页,默认是False。所以,如果你要数据分页,一定要加上这一句。
PageSize="5"
PageSize和ASP中的一样,表示每页有多少记录。
PagerStyle-HorizontalAlign="Right"
以上语句表示分页符在页面的位置的右边。
PagerStyle-NextpageText="下一页 >>" PagerStyle-PrevPageText="<< 上一页"
以上语句表示用“下一页”、“上一页”作为分页符号,如果不希望这样,想直接用数字表示,去掉这两句就可以了。
注意:与分页有关的还有PageCount属性,可以得到分页的总数。
3.数据排序
数据排序不是在SQL语句里面就可以设定吗,为什么还要专门来一个数据排序?SQL语句的数据排序只能服务器端设定,如果用户希望按照自己的喜好排序怎么办?ASP里面是没有办法解决的,现在,我们看看ASP.NET数据库怎样解决这个问题。
在DataGrid设置里面加入一下语句:
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
点击排序以后,首先,设置排序字段为点击的字段,如何重新显示数据。
每一个字段名均是一个LinkButton(连接),点击这个字段名,就可以按这个字段排序。需要注意的是,排序不是对当前页排序,而是对整个DataGrid排序。
4.数据编辑
数据库操作除了数据浏览,最大部分其实就是对数据的处理(增加、修改、删除)。数据处理,ASP.NET数据库和ASP没有太多的区别,我们看一个增加数据的例子就可以了解ASP.NET数据库编辑的实现了。
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