兰色精灵 发表于 2015-1-16 22:43:10

ASP.NET编程:ASP.NET2.0数据操纵之创立数据会见层(1...

我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。asp.net|创立|会见|数据  导言

  作为web开辟职员,我们的生存环绕着数据操纵。我们创建数据库来存储数据,写编码来会见和修正数据,计划网页来收罗和汇总数据。本文是研讨在ASP.NET2.0中完成这些罕见的数据会见形式之手艺的长篇系列教程的第一篇。我们将从创立一个软件框架入手下手,这个框架的构成部分包含一个利用强范例的DataSet的数据会见层(DAL),一个实行用户界说的营业划定规矩的营业逻辑层(BLL),和一个由共享页面结构的ASP.NET网页构成的体现层。在打下这个后真个基本事情以后,我们将入手下手转向报表,树模怎样显现,汇总,收罗,和考证web使用的数据。这些教程旨在长篇大论,利用了很多屏幕截图,供应了按步就班(step-by-step)的引导,带你履历这个开辟历程。每一个教程都有C#版和VB版,而且附有触及的完全的编码的下载。(这第一个教程对照长,但今后其他的教程将以更简单消化的篇幅推出。)

  在这些教程中,我们将利用置于App_Data目次内的微软SQLServer2005Express版的Northwind数据库。除数据库文件外,App_Data目次还带有效于创立数据库的SQL剧本,万一你想利用其余数据库版本的话。假如你乐意的话,你也能够间接从微软下载这些剧本。假如你利用其余SQLServer版本的Northwind数据库的话,你必要更新Web.config文件中的NORTHWNDConnectionString设置。本教程中的web使用是个基于文件体系的网站项目,是利用VisualStudio2005专业版创建起来的。可是,一切的教程都能够在VisualStudio2005的收费版本VisualWebDeveloper中运转。

  在这个教程里,我们将重新入手下手,先创立一个数据会见层(DAL),然后在第二个教程里创立一个营业逻辑层(BLL),在第三个教程里计划页面结构和导航。今后的教程将创建在这三个教程的基本之上。在第一个教程里,我们要会商的内容多多,以是,请翻开VisualStudio,让我们动起手来!

  第一步:创立一个Web项目,设置数据库毗连

  在我们入手下手创立数据会见层(DAL)之前,我们起首必要创立一个网站,和创建一个数据库。我们从创立一个基于文件体系的ASP.NET网站入手下手。序次以下,翻开文件(File)菜单,选择新的网站(NewWebSite),体系会显现一个新网站对话框,选择ASP.NET网站模板(WebSitetemplate),设置定位(Location)列表的选项为文件体系(FileSystem),然后选这一个安排这个网站的文件夹,然后选择编程语言为C#。


:创立一个基于文件体系的网站

  VisualStudio会为你天生一个新的网站,同时天生一个名为Default.aspx的网页,和一个App_Data文件夹。

  网站天生以后,下一步是在VisualStudio的服务器资本办理器(ServerExplorer)里为你的数据库增加一个引用(reference)。把一个数据库增加到服务器资本办理器以后,你就可以在VisualStudio情况里增加数据表,存储历程,视图等等。你也能检察数据库里的数据,手工或用查询天生器(QueryBuilder)的图形界面创建你本人的查询语句。别的,当我们为DAL创立强范例的DataSet时,我们必要把VisualStudio指向作为DataSet数据源的方针数据库。固然我们能够在得当时分供应所昀搏B???oЁ触及的数据库毗连信息,但假设我们预先在服务器资本办理器里注册这些数据库的话,VisualStudio会主动把这些数据库添补到一个下拉列表中往。

  把Northwind数据库增加到服务器资本办理器中往的步骤取决于你想利用安排在App_Data文件夹里的SQLServer2005Express版本数据库,仍是你想利用已创建好了的SQLServer2000或2005数据库服务器。

  利用置于App_Data文件夹中的数据库

  假如你没有可毗连的SQLServer2000或2005服务器,大概你就是想制止给数据库服务器增加数据库,你可使用SQLServer2005Express版的Northwind数据库,该数据库位于下载源码中的App_Data文件夹里(NORTHWND.MDF)。

  置于App_Data文件夹里的数据库会被主动增加到服务器资本办理器中。假定你已在你的呆板上安装了SQLServer2005Express版本,那末你应当在服务器资本办理器中看到一个名为NORTHWND.MDF的节点,你能够将这个节点扩大开来,扫瞄个中的数据表,视图,存储历程等等(参考)。

  App_Data文件夹还能够安排微软的Access.mdb数据库文件,跟SQLServer的数据库文件相似,这些Access文件会被主动地增加到服务器资本办理器中。假如你不想用任何SQLServer数据库,那末你总回能够下载微软Access版本的Northwind数据库文件,然后将其安排于App_Data文件夹中。但记着,Access数据库没有SQLServer那末多功效,并且它并非计划来在网站情况下利用的。别的,在前面几个教程里将用到Access数据库不撑持的数据库条理的功效。

  毗连到微软SQLServer2000或2005数据库服务器中的数据库

  大概,你也能够毗连到安装在数据库服务器上的Northwind数据库。假设数据库服务器上还没有安装Northwind数据库的话,你起首必需运转本教程下载文件中的安装剧本来把数据库增加到数据库服务器上往,大概你也能够从微软网站上间接下载SQLServer2000的Northwind数据库和安装剧本。

  安装数据库终了以后,往VisualStudio中的服务器资本办理器,在数据毗连(DataConnections)节点上按右鼠标,选择“增加毗连(AddConnection)”。假如你看不到服务器资本办理器,往菜单“检察(View)”点击“服务器资本办理器”,大概按组合键Ctrl+Alt+S来翻开服务器资本办理器。这会翻开增加毗连的对话框,在这下面,你能够设置必要毗连的服务器,认证信息,和数据库名字。在你乐成设置数据库毗连信息,按OK按钮以后,数据库就会被增加成数据毗连节点之下的一个节点。然后,你就能够扩大数据库节点来扫瞄数据表,视图,存储历程等等。


:增加一个到你的数据库服务器上的Northwind数据库的毗连
  第二步:创立一个数据会见层

  与数据打交道时,一种做法是把跟数据相干的逻辑间接放在体现层中(在一个web使用里,ASP.NET网页组成了体现层)。其情势通常为在ASP.NET网页的编码部分写ADO.NET编码大概在标识符部分利用SqlDataSource控件。在这两种情势里,这类做法都把数据会见逻辑与体现层严密耦合起来了。但保举的做法是,把数据会见逻辑从体现层分别开来。这个分隔的层被称作是数据会见层,简写为DAL,通常为经由过程一个独自的类库项目来完成的。这类分层框架的优点在良多文献里都有论述(详见本教程最初的“附加读物”里的资本),在本系列中我们将接纳这类办法。

  跟底层数据源相干的一切编码,比如创建到数据库的毗连,收回SELECT,INSERT,UPDATE,和DELETE命令等的编码,都应当安排在DAL中。体现层不该该包括对这些数据会见编码的任何援用,而应当挪用DAL中的编码来作一切的数据会见哀求。数据会见层包括会见底层数据库数据的办法。比如,Northwind数据库中,有Products和Categories两个表,它们纪录了可供发卖的产物和这些产物所属的分类。在我们的DAL中,我们将有上面如许的办法:

[*]GetCategories(),前往一切分类的信息
[*]GetProducts(),前往一切产物的信息
[*]GetProductsByCategoryID(categoryID),前往属于指定分类的一切产物的信息
[*]GetProductByProductID(productID),前往指定产物的信息
  这些办法,被挪用后,将毗连到数据库,收回符合的查询,然后前往了局。我们怎样前往这些了局是很主要的。这些办法能够间接前往数据库查询添补的DataSet大概DataReader,但幻想的举措是把这些了局以强类型工具的情势前往。一个强范例的工具,其schema是编译时严厉界说好的,而比拟之下,弱范例的工具,其schema在运转时之前是未知的。

  比如,DataReader和一般的DataSet是弱范例工具,由于它们的schema是被用来添补它们的数据库查询前往的字段来界说的。要会见弱范例DataTable中的一个特定字段,我们必要用如许的句法:DataTable.Rows[index]["columnName"]。这个例子中的DataTable的弱范例性子体现在于,我们必要经由过程一个字符串或序号索引来会见字段称号。而在另外一个方面,一个强范例的DataTable,它的一切的字段都是经由过程属性的情势来完成的,会见的编码就会象如许:DataTable.Rows[index].columnName。

  要前往强范例工具,开辟职员能够创立自界说营业工具,大概利用强范例的DataSet。开辟职员完成的营业对象类,其属性常常是对响应的底层数据表的字段的映照。而一个强范例的DataSet,则是VisualStudio基于数据库schema为你天生的一个类,其成员的范例都是由这个schema决意的。强范例的DataSet自己,是由承继于ADO.NET中DataSet,DataTable,和DataRow类的子类构成的。除强范例的DataTable外,强范例的DataSet如今还包含TableAdapter类,这些类包括了添补DataSet中的DataTable和把DataTable的修改传回数据库的各类办法。

  在这些教程的架构里,我们将利用强范例的DataSet。树模申明了利用强范例的DataSet之使用程序的不同层间的流程(workflow)。


:把一切的数据会见编码托付给DAL
  创立强范例的DataSet和TableAdapter

  我们入手下手创立我们的DAL,先给我们的项目增加一个强范例的DataSet。做法以下,在昀搏B???oЁ办理计划办理器里的项目节点上按右鼠标,选择“增加新项(AddaNewItem)”。在模板列单里选择DataSet,将其定名为Northwind.xsd。


:给你的项目增加一个新的DataSet

  在点击“增加(Add)”按钮后,VisualStudio会问我们是不是将DataSet增加到App_Code文件夹中,选择“Yes”。然后VisualStudio会显现强范例的DataSet的计划器,同时会启动TableAdapter设置导游,同意你给你的强范例DataSet增加第一个TableAdapter。

  强范例的DataSet起了强范例工具的汇合的感化,它由强范例DataTable实例构成,每一个强范例DataTable又进而由强范例的DataRow实例构成。我们将为这个教程系列要用到的每一个数据表创建一个对应的强范例DataTable。让我们入手下手吧,先为Products表创建一个DataTable。

  记着,强范例的DataTable其实不包含怎样会见对应底层的数据表的任何信息。要猎取用来添补DataTable的数据,我们利用TableAdapter类,它供应了数据会见层的功效。关于我们的ProductsDataTable,响应的TableAdapter类将包括GetProducts()和GetProductByCategoryID(categoryID)等办法,而我们将在体现层挪用这些办法。DataTable的感化是在分层间传输数据。

  TableAdapter设置导游起首要你选择利用哪一个数据库。下拉框里列出了服务器资本办理器内的那些数据库。如果你事后没有把Northwind数据库增加到服务器资本办理器里往的话,这时候你能够点击新毗连按钮来增加。


:鄙人拉框里选择Northwind数据库

  选择好数据库后,按“下一步”按钮,导游会问你是不是想在Web.config文件里寄存毗连字符串。将毗连字符串寄存在Web.config文件里,你能够制止把毗连字符串硬写在TableAdapter类的编码中,假如未来毗连字符串信息修改的话,这类做法会极年夜地简化要做的编码修改。假如你选择在设置文件存放毗连字符串,毗连字符串将被置放于<connectionStrings>段落中,这个段落能够被加密来进步平安,也能够经由过程IIS图形界面办理工具中的新的ASP.NET2.0属性页来修正。固然这个工具更适于办理员。


:在Web.config中寄存毗连字符串

  接上去,我们必要界说第一个强范例的DataTable的schema,同时为用来添补强范例DataSet的TableAdapter类供应第一个办法。这两步能够经由过程创建一个前往对应于DataTable的数据表的字段的查询同时完成。在导游的最初,我们将为这个查询对应的办法定名。完成后,这个办法能够在体现层挪用,它会实行设置好的查询,进而添补一个强范例的DataTable。

  入手下手界说SQL查询之前,我们必需起首选择我们想要TableAdapter实行查询的体例。我们能够间接用ad-hoc的SQL语句,或创建一个新的存储历程,或利用现存的存储历程。在这些教程里,我们将利用ad-hoc的SQL语句。


:用SQL语句查询数据

  至此,我们能够手工输出SQL查询。当天生TableAdapter的第一个办法时,你一样平常想要让你的查询前往那些需要在对应的DataTable中寄存的字段。我们能够创建一个从Products内外前往一切字段,一切数据行的查询来到达我们的目标:


:在文本框里输出SQL查询

  大概,我们可使用查询天生器(QueryBuilder),用图形界面来机关查询,如所示。


:经由过程查询编纂器天生查询

  在天生查询以后,在移到下一屏之前,点击“初级选项(AdvancedOptions)”按钮。在网站项目里,在默许情况下,“天生拔出,更新,删除语句”是独一已被选中的选项。假如你在类库项目或Windows项目里运转这个导游的话,“接纳优化的并发把持(optimisticconcurrency)”选项也会被选中。如今先别选“接纳优化的并发把持”这个选项。在今后的教程里我们会具体会商优化的并发把持。


0:只选“天生拔出,更新和删除语句”这个选项

  在核实初级选项后,按“下一步(Next)”按钮转到最初一屏。在这里,设置导游会问我们要给TableAdapter选择增加甚么办法。添补数占有两种形式:


[*]添补DataTableC这个做法会天生一个办法,该办法承受一个DataTable的参数,基于查询的了局添补这个DataTable。比如,ADO.NET的DataAdapter类就是在它的Fill()办法中完成这个形式的。
[*]前往DataTableC这个做法会天生一个办法,该办法会创立并添补一个DataTable,然后将其作为办法的前往值。

  你可让TableAdapter完成个中一个形式大概同时完成两个形式。你也能够从头定名这里供应的这些办法。让我们对两个复选框的选项不做修改,固然我们在这些教程里只必要利用前面这个形式。同时,让我们把谁人很一样平常性的GetData办法名改成GetProducts。
它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。

若相依 发表于 2015-1-19 21:42:08

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?

小女巫 发表于 2015-1-25 16:02:46

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

金色的骷髅 发表于 2015-2-3 05:47:13

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

再现理想 发表于 2015-2-8 19:50:27

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

活着的死人 发表于 2015-2-25 23:44:05

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

老尸 发表于 2015-3-8 10:25:03

主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。

乐观 发表于 2015-3-15 22:07:18

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

仓酷云 发表于 2015-3-22 05:54:14

同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
页: [1]
查看完整版本: ASP.NET编程:ASP.NET2.0数据操纵之创立数据会见层(1...