首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 但是我个人认为,在你想转向.NET时,请慎重考虑
【标  题】:但是我个人认为,在你想转向.NET时,请慎重考虑
【关键字】:.NET
【来  源】:http://blog.csdn.net/linrongfa033/archive/2006/09/17/1233646.aspx

但是我个人认为,在你想转向.NET时,请慎重考虑

   
   在ADO.NET中,虽然对于服务器端的游标不提供任何支持,但这不意味着你就不能使用游标.实际上,你所需要做的步骤是在.NET中输入ADO库.你只需在references node上单击右键,就可以在你自己的程序里运行本地ADO 对象.
   
   但是我个人认为,在你想转向.NET时,请慎重考虑. 首先,请务必完全输入ADO, 这不会花费太多时间和精力,这是向.NET迈出的第一步,.但是,这仅仅是万里长征的第一步而且也是通向.NET必须的一步. .NET的真正附加值是基于一个均匀的,持续稳定的接口以及本地classes的广为应用之上的.关于COM libraries是可以被支持的,合理的,但不被鼓励的,因为它仅仅是个短期解决方案,或者是一个过渡步骤.
bbc中文天疱疹交响乐知识   
   当你要开始使用ADO.NET时,请考虑这样一个事实:ADO.NET统一了数据容器类编程接口,.因此,不管是何种类型的程序: Windows Form, Web Form, 或者 Web Service也好,你都得在同一组类中集中处理有关数据. 不管处于后端的数据源是SQL Server database,或是OLE DB 提供程序,, XML文件,又或是数组,你都可以使用一样的方法和属性来进行处理.
   
   
  Figure 1. Solution Explorer menu
   
   如果你坚持在.NET世界中使用ADO,那么请准备好面对一些其它的影响,例如你需要额外的代码才能够从数据绑定控件中使用recordset.
   

  
北京安美尔工贸集团鸡饲料varchar2 nvarchar2     3.DataSet, DataTable, and Recordset
   
   关于Recordset object.,ADO.NET并没有与其直接相对应的对象.最接近的是DataTable 对象.虽然它们二者几乎具有相同的功能,但它们在各自的框架里发挥着不同的作用.
   
   Recordset是一个相当大的对象,具备ADO的大多数功能,但在某些方面仍有欠缺. Recordset在一些方面性能优良,如:它具可创造性,它可以离线操作,功能众多,但在一些方面仍需改进,如:基于其固有的COM特性, Recordset很难在网络上连载; Recordset是一个二进制的对象,因此不同平台之间的模块很难共享它;还有就是蛇不能够穿过防火墙.另外,它表现的是记录的单个表.如果该table作为一个或几个JOIN的结果,那么它很难更新原始代码源.当你试图将脱线的recordset与原始代码源统一起来时,数据源必须能够识别SQL.不管如何,你的recordset可以由非SQL 提供程序创建.
   
   在ADO.NET中,ADO Recordset的所有功能被分拆成几块更简单的对象:其中一个便是DataReader. DataReader模拟了快速,只读,仅向前的只读游标的操作.
   
   DataTable,表现了数据源,是个简单的对象. 你可以手动构造一个DataTable,或者也可使用DataSet命令自动生成. DataSet对于它所包含的数据知之不多.通过它,你可以在内存中处理数据,或者是其它比如排序,编辑,筛?,创建浏览等工作.
   
msn朋友列表宝安奋达flsh动画网站   DataSet对象是一个数据容器类,是实现ADO.NET数据抽?的关键对象. DataSet集合了一个或几个DataTable 对象. DataTable 通过如行,列这样的通用集合,公开自身的内容.当你尝试从数据表读?数据时,你也许正穿过了两个不同的层面: DataTableMapping 和 DataView.
   
   DataTableMapping 对象包含了数据源中的数据列,以及DataTable object之间的映射关系.
   
   当填充 DataSet 时,DataSetCommand 对象要使用这个类 Kな菁械某橄罅泻褪菰粗械奈锢砹兄涞牧唇??
   
   表的视图通过 DataView 对象实现 K硎?DataTable 的自定义视图,可以绑定到特定控件(如 Windows 窗体和 Web 窗体中的数据网格)中 8枚韵笙嗟庇?SQL CREATE VIEW 语句在内存中的实现 ?
   
   DataSet中所有的表,通过一个公共的域,相互之间能产生关联.它们之间的联系是由DataRelation 对象来进行管理.这样说起来挺象ADO的数据形成,但还是有一个最大的不同.
   
没有鼠标箭头宁波市小学06六级考试答案   在DataRelation里,你不需要使用数据形成语言,而且还可以获得非常灵活的组织架构. 通过ADO .NET 导航模型,你可以很容易的从某一张表中的主行移动到它的所有子行里.
   
   DataRelation object是关于JOIN 语句在内存中的实现,可用于建立数据类型相同的的parent/child关系,. 一旦关系确立,任何破坏这种关系的修改都被禁止. Views和 relations是完成master/detail 架构的两个方法.请记?view仅是加载于记录之上的掩码, 但是relation
   
   是位于几个列之间的动态链接,在relation下,你无法更改顺序或是设置条件.
   
   如果你的代码需要1对1的外键关系,而且更改数据,最好不用JOIN命令.如果你需要额外的筛?功能,你可以寻求ADO .NET自定义视图的支持.
   
     4.转换现有代码
   
黑龙入口任务男人就下一百层下载北京交通大学艺术系   大量的ASP页面使用ADO对象来抽?数据.让我们一起来回顾下几例典型的案例,对你在以后处理移植或者改写代码时也许会有帮助 ?
   
   如果你有从单个recordset生成报表的ASP页面,那么DataReader会是你的好帮手 ?
   
  String strConn, strCmd;
  strConn = "DATABASE=MyAgenda;SERVER=localhost;UID=sa;PWD=;";
  strCmd = "Select * From Names where ID=" + contactID.Text;
  SQLConnection oCN = new SQLConnection(strConn);
  SQLCommand oCMD = new SQLCommand(strCmd, oCN);
  oCN.Open();
未见其人香港it网站杰伦06年的新专辑  SQLDataReader dr;
  oCMD.Execute(out dr);
  while (dr.Read()) {
  // Use dr.GetString(index) or
  // dr["field name"] to Response.Write data
  }
   
   你可以利用HasMoreRows属性来快速检查是否DataReader为空.如果你仅仅只简单处理一系列记录,没有什么比DataReader.更快,更好的对象了,它同样适用于查询单个记录 ?
   
   DataReader.的内容是不可编辑的,但你可以将内容移动到更具管理功能的对象里,如:
腾讯qq升级包下载汽车专用名词135和445端口   
   DataTable或是一个或多个DataRow 对象.
   
   当你需要处理表与记录二者之间的复杂关系时,DataReader就不是合适的工具了 J菽P土唇釉蕉啵琒QL命令则会越复杂 5己侥?楸S辛?最后放入缓存的数据往往多于你所需要的,. DataSet 和 DataRelation objects是这种表关系模型的基?.
   
   为管理parent/child 关系,ADO同样也对data-shaping engine进行封装. 总的说来, data shaping 和 ADO .NET 关系是一回事.就设计方面来说,二者几乎没有共同点. Shaped recordsetsct嵌入列表对象中包括了所有数据表信息 DO.NET关系是动态链接,你可以在两个数据表间随时建立. ADO依靠于Shaping OLE DB service 提供程序,并使用专门的SQL类语言特征以在执行单个ADO命令的过程中生成一个分层的recordset.
   
   在 ADO.NET 中,关系中涉及的每个对象总是被看成单独的个体 9叵当旧碜魑韵蟊还⑶揖哂幸欢ǖ男形嬖?@纾珼ataRelation 对象可以从父行到子行一层层进行更改 D梢酝ü?ForeignKeyConstraint 对象添加到 DataTable 的 Constraints 集合中来进行此操作 oreignKeyConstraint 对象表示当删除或更新数值和行时,对通过外键关系相关联的一组列的约束 H缜懊嫣岬降模坏┥柚煤昧斯叵担谒闯绦蛟ど柚罩怪埃荒芙锌赡芷苹蹈霉叵档母??
   
   正如早先提到的一样,一旦设置了relationship,除非它是程序性的终止,你不能够对它进行修改,那样会使它突然中断.
亚洲电性autocad 2006 报价平面设计所用软件   
   另外, relations没有递延性.你可以在Customers 和Orders之间,Orders 和 Products之间设置两个不同的关系.但是,当为了某个customer而对orders导航时,你不能够从一个order跳到相关的products行.解决方法是,你必须另外打开Orders/Products 关系,锁定你需要的order,然后获?相关的行.
   
   程序员需要在ASP Session 对中存储记录吗?通过ADO .NET 和 DataSet 对象,你可以非常安全的进行工作,而不会引起在"Storing an ADO Recordset in GIT Might Cause An Access Violation"中所论及的麻烦.
        5.更新数据
   
   Web程序通常利用无程式语句或者通过参数代存储过程来更新数据.但是,当遇见脱线的数据时,你也许希望利用内置服务来更新所有需要修订的记录.为完成这一工作.ADO提供了成批的更新机制.
   
   UpdateBatch 方法用于把保存在副本缓冲中的 Recordset 更改发送到服务器,以更新数据源 K捎每攀剿ǎ市硭泄移鸬谋镜馗?K乖诘ジ霾僮髦邪阉懈拇偷绞菰?=龅备奶峤缓笫菰此ㄒ牡募锹际保呕岢鱿挚攀剿??攀剿ㄊ沽礁鲇没Э梢酝狈梦释桓黾锹迹桓鲇没淙氲母暮芸旎岜涣硪挥没哺?5比唬庵址绞揭笫菰茨芄患觳夂头乐故莩逋?;挂笳鍪菰幢冉衔榷ǎ换岱⑸捣钡母?7裨颍荒严胂笮鞣延媒芸斐娲细袼ㄋ吹慕谠?J率瞪希褂?UpdateBatch 方法,在任何更改失败时都会返回一个错误 H缓螅梢酝ü?Errors 集合和 Error 对象来访问该错误 ?
   
开天2200主板驱动路由器上网故障时钟发生器型号   要理解 ADO.NET 模型为什么是更新数据的更强大的工具,理解 ADO 中开放式锁定的工作原理是非常关键的 T?ADO 代码中,您无法控制调用 UpdateBatch 之后所发生的一切 R簿褪撬担率窃诜衿魃贤ü龆迅牡男?然后比较原始值和数据源中对应记录中的当前值来进行的 5彼械闹刀家恢铝耍哦员碇葱惺实钡?SQL 语句(INSERT PDATE 或 DELETE) ?
   
   以上陈述说明了你还不能够控制SQL 语句 N挥诜衿鞫说母?代码既不会比你自己写的好,也不会在你采用的非SQL 提供程序的情况下运作 T诒菊陆诘目疾糠荩乙丫擦薟eb应用程序是典型的通过参数化存储进程来更新数据的过程 2还苋绾危绻阌门拢榭鼍突嵊兴煌?
   
   在ADO.NET中, 模型已被扩展开来.现在,它采用更为通用的架构,通过它你可以规定你自己关于基本运算的命令语句,如插入,删除,更新以及?择. 更明显的,你可以观察到从数据源里提?数据的企图,并且不管数据源的本性,可以提供相同的支持.ADO.NET中的批更新,要求你创建一个DataSetCommand 对象: SQLDataSetCommand 或者ADODataSetCommand
   
   注: 在Beta 2中, DataSetCommand对象被称为DataAdapter 对象.
   
   一旦你采用了DataSetCommand对象,你可以使用它的Update 方法. DataSetCommand提供了一系列属性:如InsertCommand, DeleteCommand, UpdateCommand, and SelectCommand.它们都是Command对象,但你不能够对它们进行设置,除非缺?设置没有按你的要求完成.这与ADO中一样.在Update过程中,如果没有设置xxxCommand属性,但是主关键字已经存在内,则会自动生成Command对象.
   
广告宣传手法腾讯浏览器qq骂人专用   以下代码展示了如何为EmployeesList table设置主关键字,
   
  DataColumn[] keys = new DataColumn[1];
  keys[0] = m_oDS.Tables["EmployeesList"].Columns["EmployeeID"];
  m_oDS.Tables["EmployeesList"].PrimaryKey = keys;
   
   主关键字基本上是是DataColumn对象的一个数组.
   
   如果你想利用存储过程来更新表单,或者你利用专用非SQL 数据提供程序进行操作,那么你将会常常用到这 些命令属性.
      6.XML的延展支持功能
小龙虾苗ibm t21 网卡驱动陕西电费收费标准   
   在ADO中,XML仅仅只是作为输入和输出格式.但是,在ADO.NET中,XML作为数据记录格式为你提供了一系列的方法,如: manipulating, reorganizing, sharing, and transferring. 任何你输入进到DataSet中的数据,不管是不是原创,都能够通过双面编程模型进行处理.
   
   如同XML文档一样,DataSet 读?/书写数据和模式 J莺湍J皆贖TTP中是可转移的,也可以在任一支持XML的平台上运行 O嗤氖菰诓煌氖奔涠瓮ü煌哪J娇梢员恢葱?D憷肦eadXmlSchema来书写模式 ?XML模式包含了data set中tables 的名称,如同data set 中的relations 和 constraints一样 T诘饔肦eadXmlData之前你应该完成这个步骤
   
   以下代码示例是一个显示可更新数据表的最简单的 ASP.NET 页面 ?
   
  <%@ Import Namespace="System.Data" %>
  <%@ Import Namespace="System.IO" %>
   
浙江大华技术浙工大浙西分校夏新da8说明书  <script runat="server" language="C#">
  void Page_Load(Object source, EventArgs e)
  {
  DataSet data = new DataSet();
   
  // Loads XML data and schema
  StreamReader sr;
  sr = new StreamReader(Server.MapPath("data.xml"));
  data.ReadXml(sr);
  sr.Close();
冰封王座秘籍代码北京欢乐时光太平洋网络游戏   
  // Add a new record passed through the URL
  if (Request.QueryString.Count >0)
  {
  DataTable dt = data.Tables[0];
  DataRow dr = dt.NewRow();
  dr["FirstName"] = Request.QueryString["First"];
  dr["LastName"] = Request.QueryString["Last"];
  dt.Rows.Add(dr);
  dt.AcceptChanges();
无线领夹话筒美语发音纠音东风汽车康明斯153   
  StreamWriter sw;
  sw = new StreamWriter(Server.MapPath("data.xml"));
  data.WriteXml(sw);
  sw.Close();
  }
   
  // Refreshes the UI (made of a grid)
  grid.DataSource = data.Tables[0].DefaultView;
  grid.DataBind();
钢琴曲献给爱丽丝ajax.dll企业家电子名片  }
  </script>
   
   如图 2 所示,您可以将新的行添加到表中 H欢簧婕?SQL Server 或 Access 表 K皇且桓?XML 文件,在处理它的代码中,没有使用 XML 节点或 XMLDOM 方法 D梢杂孟嗤闹惫凼荼斫涌诶炊寥 和更新 XML 记录 D墓ぷ鞣绞接朐?ADO 中大致相同,但此处的模型更深入 ⒏哟螅懈嗟那绷┠シ⒕??
   
   
   Figure 2. Example of an updateable table
   
   7.结论
   
虚拟机怎么上网上海永乐电影康特听诊器   Web 应用程序的成功改变了典型分布式系统的面貌 O衷诖蠖嗍植际较低扯际?n 层系统,这类系统对扩展性和互操作性的要求越来越高 R虼耍橇邮荽砗?XML 成为最佳实践,并为业界广为接受 ?
   
   ADO.NET试图将一些现有的在.NET旗下最好的精华都统成为一体.对于数据访问的所有的编程模式就综合性的,并是非常强大的.也许该模式不能一一满足你的每个要求,但它朝模式设计方向跨出了一大步,不管如何,请记?ADO.NET只是一个测试版,而且只有有限的文档支持.
   
   ADO程序员从该测试版中将会受益非浅,因为他们已经熟悉了关于ADO.NET的方方面面,包括关于abstraction的最高层次-- inspiring 模型. ADO.NET代码与现有的ADO代码并不兼容,但是功能却近似. 为完全发挥ADO.NET 的优势,与其只是简单的计算出最快的方式来放置代码,还不如实实在在的弄清楚ADO.NET它本身的要领.不管如何,.你所?择的NET编程模式-- Windows Forms, Web Forms, or Web Services,ADO.NET都会在数据存?方面帮你一把.
   
   

                          ASP.NET中WebForm组件CheckBoxList编程
                     作者: 马金虎   www.ASPCool.com 时间:2002-12-17
世界最先进的柴油机费尔托斯特免费下载换衣服小游戏


  
     CheckBox?择组件是一个程序中都经常的组件 T诔绦蛏杓浦惺褂玫礁米榧话愣疾换嶂皇褂玫揭桓觯且远喔龃死嘧榧男问匠鱿值?T贏SP.NET页面中如果要使用到多个CheckBox组件,除了添加多个CheckBox组件在页面中之外,还有一种比较方便的方法,就是使用CheckBoxList组件 heckBoxList组件是由一组的CheckBox组件组成的,在此组件中CheckBox是做为条目的形式出现的,并且对每个在CheckBoxList组件中的CheckBox都有一个索引号,这样在程序中就更容易来处理了 ?
   
   这时你可能要问,这不是多此一举么,既然有了CheckBox组件,还要CheckBoxList组件干什么?这是因为在程序设计的过程中,处理CheckBoxList组件要往往要比处理CheckBox组件相对容易的多并且也明了的多 >倮缦拢?
   
   假定有一个CheckBoxList组件和有十个CheckBox组件,并且这个CheckBoxList组件是由这十个CheckBox组件构成的 N思觳庹馐鯟heckBox组件中的哪些已经被?择的,如果程序中?用的CheckBox组件就需要如下代码:
   
浙江电子警察网上征婚 郑州剑侠情缘2攻略秘籍   if ( C1 . Checked )
   {
   }
   if ( C2 . Checked )
   {
   }
   ....
   if ( C10 . Checked )
   {
   }
外星生物揭秘图片如何设置ie熏衣草歌曲   
   但如果程序中使用了CheckBoxList组件,就只需要以下这几行代码就可以了:
   
   for ( int i = 0 ; i < CHK . Items . Count ; i++ )
   {
   if ( CHK . Items [ i ] . Selected )
   {
   //处理你要完成的工作
   }
   }
中文语音朗读软件渭南市卫生局北京慈济健康体检   
   注释:其中C1 -- C10是CheckBox组件,CHK是CheckBoxList组件
   
   可见用了CheckBoxList组件,在程序设计中的确更明了,更简洁了 2⑶抑灰阏莆樟薈heckBoxList组 件的用法,CheckBox组件的用法大致也就会了 ?
   

 
如何编写测试用例?:【上一篇】
二零零六年九月十八Sniffer学习手册完成:【下一篇】
【相关文章】
  • 此安装不支持该项目类型-Community Server 2.1 for asp.net 2.0中文正式版
  • asp.net运行时,动态添加Button(或其它控件),并处理相应的事件
  • FCKEditor在Asp.net的安装
  • 介绍一下自己的开发框架CSoftSample.NET
  • 基于.Net的SAP Portal开发
  • asp.net控件开发基础系列
  • .net 通用计算库
  • Maverick.Net代码解析
  • 让SOA同时支持J2EE和.NET
  • 在asp.net 2.0中实现ajax的代码
  • 【随机文章】
  • Linux系统调用讲义
  • 04黑客<谁动了我电脑>黑客在何方 五
  • 系统调查分析与可行性研究
  • Windows-工具条(三)
  • WebLogic域配置策略--手动和模板选项
  • BitTorrent协议详解0.52Beta(607)译本
  • VPE构建全程全网的企业VPN
  • shell 阅读笔记-基本命令
  • 惠普公司前CEO卡莉-费奥瑞娜(Carly Fiorina)的演讲
  • BitTorrent 协议规范(翻译)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.