仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 615|回复: 6
打印 上一主题 下一主题

[学习教程] ASP.NET网页设计ASP.NET2.0数据操纵之创立数据会见层(3...

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:43:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。asp.net|创立|会见|数据  第四步:拔出,更新和删除数据

  经常使用的拔出,更新和删除数据的形式有两种。第一种形式,我称之为DB间接形式,触及的办法被挪用时,会向数据库里收回一个INSERT,或UPDATE,或DELETE命令,这个命令只对单个数据库纪录做操纵。象如许的办法一样平常承受一系列对应于拔出,更新或删除的值的标量参数(比如整数,字符串,布尔值,日期工夫等)。比如,用这个形式来操纵Products表的话,删除办法会承受一个整数参数,代表所必要删除的纪录的ProductID,而拔出办法则会承受一个对应于ProductName的字符串,对应于UnitPrice的decimal值,对应于UnitsOnStock的整数等等。


1:每一个拔出,更新,和删除哀求都被立即发送到数据库

  别的一个形式,我称之为批更新形式,能够在一个办法挪用里更新全部DataSet,大概全部DataTable,或者一个DataRow汇合。在这个形式里,开辟职员在一个DataTable中删除,拔出,修正DataRow,然后把这些DataRow或全部DataTable传给一个更新办法。然后这个办法会轮循传进的DataRow们,经由过程DataRow的RowState属性属性来决意这些DataRow是不是被修改过,或是新纪录,或是被删除的纪录,然后为每一个纪录收回符合的数据库命令。


2:在Update办法挪用以后,一切的变化都与数据库同步了

  在默许情况下,TableAdapter接纳批更新形式,但也撑持DB间接形式。由于我们在创立我们的TableAdapter时的初级选项当选择了“天生拔出,更新,和删除语句”这个选项,ProductsTableAdapter包括了一个Update()办法,该办法完成了批更新形式。详细地说,TableAdapter包括了一个Update()<昀搏B???oЁCODE>办法,能够传进一个强范例的DataSet,大概一个强范例的DataTable,大概一个和多个DataRow。假设你在一入手下手创立TableAdapter时的选项中没有扫除“天生DB间接办法(GenerateDBDirectMethods)”复选框的话,DB间接模式也会经由过程Insert(),Update()和Delete()办法来完成。

  这两种数据修正形式都利用了TableAdapter的InsertCommand,UpdateCommand,和DeleteCommand属性来向数据库收回对应的INSERT,UPDATE和DELETE命令。你能够在DataSet计划器里点击TableAdapter,然后在属性窗口检察和改动InsertCommand,UpdateCommand,和DeleteCommand属性。(确认你选择了TableAdapter,而且ProductsTableAdapter工具是属性窗口中下拉框里被选中的项)


3:TableAdapter包括InsertCommand,UpdateCommand,和DeleteCommand等属性

  想检察或修改这些数据库命令的属性的话,点击CommandText子属性,这会启动对应的查询天生器。


4:在查询天生器里设置拔出,更新,删除语句

  上面的编码例子树模了怎样利用批更新形式来把没被停止的,且库存即是或少于25个单位的产物的代价加倍:


C#
  1. 123456789101112
复制代码
  1. NorthwindTableAdapters.ProductsTableAdapterproductsAdapter=newNorthwindTableAdapters.ProductsTableAdapter();//Foreachproduct,doubleitspriceifitisnotdiscontinuedand//thereare25itemsinstockorlessNorthwind.ProductsDataTableproducts=productsAdapter.GetProducts();foreach(Northwind.ProductsRowproductinproducts)if(!product.Discontinued&&product.UnitsInStock<=25)product.UnitPrice*=2;//UpdatetheproductsproductsAdapter.Update(products);
复制代码
  上面的编码树模怎样利用DB间接形式删除一个产物,更新一个产物,然后增加一个新的产物:


C#
  1. 123456789101112
复制代码
  1. NorthwindTableAdapters.ProductsTableAdapterproductsAdapter=newNorthwindTableAdapters.ProductsTableAdapter();//DeletetheproductwithProductID3productsAdapter.Delete(3);//UpdateChai(ProductIDof1),settingtheUnitsOnOrderto15productsAdapter.Update("Chai",1,1,"10boxesx20bags",18.0m,39,15,10,false,1);//AddanewproductproductsAdapter.Insert("NewProduct",1,1,"12tinspercarton",14.95m,15,0,10,false);
复制代码
  创立自界说的拔出,更新,删除办法

  用DB间接法天生的Insert(),Update(),和Delete()办法偶然候会感到有点不便利,出格是当数据表有很多字段的时分。看一下后面这个编码例子,没有IntelliSense的帮助的话,不是很分明Products表的哪一个字段对应Update()和Insert()办法中的哪一个输出参数。偶然候我们只需更新一到二个字段大概必要一个自界说的Insert()办法,这个办法必要前往刚拔出的纪录的IDENTITY(自增)的字段值。

  要创立如许的自界说办法,回到DataSet计划器。在TableAdapter上按右鼠标,选择“增加查询”,然后回到TableAdapter设置导游。在第二屏上,我们能够指明要天生的查询的范例。让我们天生一个增加新的product(产物)纪录,然后前往新增加纪录的ProductID值的办法。因而,选择天生一个插进(INSERT)型查询。


5:创立一个给Products表增加新纪录的办法

  下一个屏显现InsertCommand的CommandText属性。在查询语句前面,增加一个SELECTSCOPE_IDENTITY()的查询,这查询将前往以后统一个操纵局限内插进IDENTITY字段的最初谁人identity值。(详见手艺文档中关于SCOPE_IDENTITY()的内容和为何你应当利用SCOPE_IDENTITY()而不是@@IDENTITY)。确认在增加SELECT语句前,你在INSERT语句前面添一个分号。


6:增加查询前往SCOPE_IDENTITY()值

  最初,把这个新办法定名为InsertProduct。


7:放办法名字设成InsertProduct

  当你前往DataSet计划器时,你将看到ProductsTableAdapter多了一个新的方法,InsertProduct。假如对应Products表的每一个字段,这个新的办法没有对应的参数的话,十分大概的缘故原由是,你忘了给INSERT语句的开头增加一个分号(semi-colon)。从头配置InsertProduct办法,确认在INSERT和SELECT语句间有个分号。

  在默许情况下,拔出办法挪用的长短查询(non-query)办法,意即,他们只前往受影响的纪录数。可是,我们想要让InsertProduct办法前往一个查询前往的值,而不是受影响的纪录数。这能够把InsertProduct办法的ExecuteMode属性改成Scalar(标量)来完成。


8:把ExecuteMode属性改成Scalar

  上面的编码树模怎样利用这个新的InsertProduct办法:


C#
  1. 1234567
复制代码
  1. NorthwindTableAdapters.ProductsTableAdapterproductsAdapter=newNorthwindTableAdapters.ProductsTableAdapter();//Addanewproductintnew_productID=Convert.ToInt32(productsAdapter.InsertProduct("NewProduct",1,1,"12tinspercarton",14.95m,10,0,10,false));//Onsecondthought,deletetheproductproductsAdapter.Delete(new_productID);
复制代码
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。
金色的骷髅 该用户已被删除
沙发
发表于 2015-2-2 13:43:54 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
小魔女 该用户已被删除
板凳
发表于 2015-2-7 21:43:13 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
谁可相欹 该用户已被删除
地板
发表于 2015-2-23 12:24:50 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
变相怪杰 该用户已被删除
5#
发表于 2015-3-7 08:57:40 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
第二个灵魂 该用户已被删除
6#
发表于 2015-3-14 16:32:40 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
简单生活 该用户已被删除
7#
发表于 2015-3-21 12:03:30 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-30 20:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表