ASP.NET网站制作之ASP.NET当即上手教程(9)
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。服务器端数据先容数据会见是实际天下中使用程序的中心内容。Asp.net供应了一套丰厚的控件,他与CLR(通用言语运转库)供应的用来办理数据会见的APIs(使用程序接口)严密分离。本章预排几个重复利用asp.net的DateGrid控件来绑定SQL查询了局和XML数据文件的例子。本章假定进修者熟习数据库基本和SQL查询言语。
Wincheer注:预排(walkthrough)这个词不晓得该如何正确翻译,他的意义是在盘算机程序计划中,在一个小组内举行有构造的会商,以便对盘算机程序的逻辑举行跟踪反省的一个历程。
服务器端数据会见对照共同,其缘故原由在于web页面是无态的。这就招致在试图实行事件,如拔出大概更新纪录的时分,呈现了一些有难度的应战。正如你将在本章看到的,DataGrid控件可以匡助办理这些应战,同意你稀释更多的使用程序逻辑,而且削减事务处置和形态办理的细节。
Connections(毗连)、Commands(命令)、和Datasets(数据集)
通用言语运转时候(CLR)供应了一整套办理数据会见的APIs,用来加强数据使用程序开辟情况。这些使用程序接口用分歧的体例来获得和添补数据,而不论实践的数据源是甚么(SQLServer,OLEDB,XML,等等)最经常使用的三个工具是connections,commands,和datasets.
Connection暗示到数据存储的物理毗连,比方毗连SQLServer大概XML文件。
Command暗示获得(select)大概操纵(insert,update,delete)数据存储的命令。
Dataset暗示使用程序用以事情的实践数据。注重datasets老是与他们的数据源毗连和数据模子分别,而且能够被自力修正。不外,对dataset举行修正,能够很简单的与原始数据模子和谐分歧。
关于在通用言语运转时候办理数据会见的更多细节成绩,请参阅ADO.NET概述。
会见基于SQL的数据
使用程序经常必要对SQL数据库实行一个或多个select,insert,update,大概delete语句。上面的表格展现了一些完成这些功效的示例代码。
以下为援用的内容:
功效举例
------------------------------------------------------------------
复杂查询|SELECT*fromEmployeesWHEREFirstName=Bradley;
------------------------------------------------------------------
团结查询|SELECT*fromEmployeesE,ManagersMWHEREE.FirstName=M.FirstName;
------------------------------------------------------------------
拔出|INSERTintoEmployeesVALUES(123-45-6789,Bradley,Millington,ProgramManager);
------------------------------------------------------------------
更新|UPDATEEmployeesSETTitle=DevelopmentLeadWHEREFirstName=Bradley;
------------------------------------------------------------------
删除|DELETEfromEmployeesWHEREProductivity<10;
------------------------------------------------------------------
要想让你的页面可以会见SQL数据库,必需在页面中引进System.Data和System.Data.SqlClient称号空间:
<%@ImportNamespace="System.Data"%>
<%@ImportNamespace="System.Data.SqlClient"%>
为了从SQL数据库实行select查询,你必要经由过程毗连字符串创建一个毗连到数据库的SqlConnection工具,然后机关一个包括查询语句的SqlDataAdapter工具。为了用查询的前往了局添补到DataSet工具,必要挪用SqlDataAdapter的Fill办法。
以下为援用的内容:
SqlConnectionmyConnection=newSqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdaptermyCommand=newSqlDataAdapter("select*fromAuthors",myConnection);
DataSetds=newDataSet();
myCommand.Fill(ds,"Authors");
正如本章后面提到的那样,利用dataset的优点在于供应了一个分别的数据库视图。你能够在使用程序中操纵dataset,然后将你的修正与实践的数据库分歧。关于长工夫运转的使用程序来讲,因为制止了频仍的读取数据源,因此是最好的处置举措。关于web使用程序来讲,常常利用冗长的操纵(一般只是复杂的显现数据)来处置客户真个哀求。在这类情形下,我们就能够利用SqlDataReader来取代DataSet工具。
SqlDataReader工具供应了一种从sql数据库获得数据时,只向前,只读的指针。因为SqlDataReader工具利用表格局数据流(TDS)间接从数据库毗连读取数据,以是,在同意利用的情形下,他的实行效力高于DataSet。
利用SqlDataReader工具的时分,必要利用SqlCommand来取代SqlDataAdapter。SqlCommand利用ExecuteReader办法失掉SqlDataReader工具。注重在利用SqlCommand的时分,必需显式地翻开和封闭SqlConnection。挪用ExecuteReader办法以后,SqlDataReader工具就能够作为数据源绑定到ASP.NET服务器控件了。下一个大节将会演示这类情形。
以下为援用的内容:
SqlConnectionmyConnection=newSqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlCommandmyCommand=newSqlCommand("select*fromAuthors",myConnection);
myConnection.Open();
SqlDataReaderdr=myCommand.ExecuteReader();
...
myConnection.Close();
当实行一条不必要前往数据的SQL命令,如inserts,updates,和deletes,也利用SqlCommand。该命令经由过程挪用ExecuteNonQuery办法来实行,前往实践处置的行数。注重利用SqlCommand的时分,必需显式的翻开毗连;而SqlDataAdapter则主动的翻开毗连。
以下为援用的内容:
SqlConnectionmyConnection=newSqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlCommandmyCommand=newSqlCommand(
"UPDATEAuthorsSETphone=(800)555-5555WHEREau_id=123-45-6789",
myConnection);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
主要提醒:页面实行终了以后,记得务势必数据模子的毗连封闭。不然的话,当守候渣滓接纳功效处置页面实例的时分,大概在不经意间就损耗尽毗连数限定。
将SQL数据绑定到DataGrid
上面的例子展现了将一个复杂的查询语句绑定到DataGrid控件。DataGrid托付了一个包括sql数据的表。
相似数据绑定那一章提到的DropDownList,DataGrid控件撑持Ienumerable大概Icollection范例的DataSource属性,就好像DataSet一样。你能够经由过程将(包括在DataSet中的)表的DefaultView属性赋值给想利用的(DataSet中的)表的称号,来利用DataSet控件,DefaultView属性暗示DataSet中以后表的形态,包括使用程序代码所作的任何改动(比方行删除大概值的改动)。设置了DataSource属性今后,能够挪用DataBind()来添补控件。
以下为援用的内容:
MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;
MyDataGrid.DataBind();
另外一个不异的语法是同时指定DataSource和DataMember.在本例中,ASP.NET主动为你猎取了获得了DefaultView。
以下为援用的内容:
MyDataGrid.DataSource=ds;
MyDataGrid.DataMember="Authors";
MyDataGrid.DataBind();
你也能够间接绑定到SqlDataReader。假如你仅仅显现数据,那末SqlDataReader的"只向前"特征十分合适这类场所,同时你能够失掉更高的实行功能。
注重:在本章的残剩部分,我们利用的都是DataSet这类数据会见形式来演示;实践上,这些例子也一样可使用SQLDataReader来重写。
实行用参数暗示的Select命令
你也能够利用SqlDataAdapter工具来实行带参数的select语句。上面的例子演示怎样利用selectHtmlControl控件传送的值来改动查询的了局。
SqlDataAdapter包括Parameters汇合,可使用变量标识符(称号前加一个"@")来取代值。你能够给这个汇合增添一个新的SqlParameter来指定参数的称号、范例、和巨细,然后设置他的Value属性的值。
以下为援用的内容:
myCommand.SelectCommand.Parameters.Add(newSqlParameter("@State",SqlDbType.NVarChar,2));
myCommand.SelectCommand.Parameters["@State"].Value=MySelect.Value;
主要提醒:注重DataGrid的EnableViewState属性缺省设置是false。假如在每次页面哀求时添补数据,就没有需要让DataGrid保留表单发送的形态信息。因为DataGrid保留它包括的一切的形态的数据,因而将EnableViewState封闭能够进步页面实行功能。
下面的例子静态的添补列表框的数据。假如数据库中的值已产生了变更,这类办法就不克不及够很好的事情。因为列表框也撑持IEnumerableDataSource属性,以是你可使用select查询来静态的添补列表框的值,如许能够包管数据库和用户接口老是分歧的。上面的例子演示了这个历程。
在SQL数据库中拔出数据
为了在数据库中拔出一行纪录,你能够在页面上增添一个输出表单,然后在表单提交的事务句柄中实行一条拔出命令。就像下面两个例子一样,你是用命令工具的参数汇合添补命令的值。在拔出数据的之前,注重反省并确保从表单失掉的值不克不及为空,如许能够制止数据库字段束缚前提的不测毛病。为了避免数据表中主索引与欲拔出的纪录反复,可使用try/catch语句块来实行拔出命令。
除明白的反省输出数据之外,你也能够利用后面章节提到的考证控件来反省数据输出。上面的例子向你展现了怎样利用做到这一点。注重正则表达式考证控件在反省作者id、邮政编码和德律风号码等字段时的便利。
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。 微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。 现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
页:
[1]