ASP.NET笔记

时间:2010-03-15 12:19:08  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:rid与DataSet配合来显示数据。它的示例可以非常方便的使用VS向导来加以实现,只需写少量的代码。但在效率上存在以下问题:      ·DataGrid控件的每次显示都要进行DataBind,而每次DataBind都要重新读入数据库中当前使用表的所有需要数据到DataSet中。这在实际使用中几乎是不可以被接受的。      ·示例中没有充分使用V...
  正文:主题:DataGrid控件的再开发
  
  一、问题提出
  
  1、Microsoft教程中DataGrid控件与DataSet配合存在的问题
  
  Micorsoft的QuickStart教程中使用DataGrid与DataSet配合来显示数据。它的示例可以非常方便的使用VS向导来加以实现,只需写少量的代码。但在效率上存在以下问题:
  
  ·DataGrid控件的每次显示都要进行DataBind,而每次DataBind都要重新读入数据库中当前使用表的所有需要数据到DataSet中。这在实际使用中几乎是不可以被接受的。
  
  ·示例中没有充分使用VS这样的工具,其ASP/ target=_blank class=infotextkey>aspx文件中连接字符串不可共享。事实上,我们常常要在自己的机器上进行文件调试。然后把文件上传到服务器上,此时,数据库的XXXConnection字符串经常要进行相应的修改,而这样的字符串又分布在不同的文件的不同地方,修改让人提心吊胆(怕有遗漏)。事实上,大多数都是使用的相同的数据库,即相同连接。
  
  2、DataSet的尴尬
  
  Microsoft定下DataSet的目的到底是什么?现在的我有点迷惑:
  
  作为初学者,我觉得DataSet真是个好东西。当时我仅花了两行代码加Vs 向导就用DataGrid显示出了所有的表中的内容;这一切使得用为DataSet就这样简单。
  
  然而,我很快乐不起来了。DataSet在默认下一次把所有的相关内容全装入到内存中,而不是只装入需要显示的内容。MS的文档说DataSet适用于需要反复进行临时修改的数据,但我还是很迷惑:因为,DataSet不是公用的。换句话说,每个用户都会有它的DataSet,这样的DataSet一般不是一个,因为ViewState中不保存DataSet,所以每次进行PostBack之前,它一般应当进行Cache或Session,这样,服务器的内存就有两份DataSet。假定每个DataSet占1M(很小的表),那么100个用户就让你的服务器吃不消。
  
  但,DataSet的确比较方便!性能与方便,鱼与熊掌。
  
  二、解决思路
  
  1、自定义读入DataSet数据与DataGrid的相关内容。由于DataGrid不能与DataSet进行直接处理,所以翻页操作等相关内容必须要进行重写。
  
  2、使用Web.Config进行连接字符串共享。DataAdapter向导的好处是方便,但它不能直接使用web.config中的内容,所以,只得手动写相应的代码。可惜可惜!不过,向导的代码实在是太长太多,手写简单一点也算好。L
  
  3、用DataSet还是DataReader?
  
  实在是犹豫了很久。不少相关示例都用的是DataReader,但我这人懒,一切想简单。于是,我还是选择了DataSet,只是只装入很必要(显示)的内容。显示了后就release它,所以应当不占内存。
  
  三、目标:
  
  四、过程
  
  1、 使用Web.config
  
  (1) 在Web.config中加入:
  
  <apphotoshop/ target=_blank class=infotextkey>psettings>
  
   <add key="ConnectionString" value="data source=TMSNETSDK;initial catalog=Northwind;integrated security=SSPI;persist security info=False;workstation id=TMS;packet size=4096" />
  
   </appSettings>
  
  (2) 在vb代码中如下方式使用:
  
  cnn = New SqlConnection(ConfigurationSettings.AppSettings().Item("ConnectionString"))
  
   '上面的语句等价于cnn = New SqlConnection("data source=TMS;initial catalog=MyGuest;integrated security=SSPI;persist security info=False;workstation id=TMS;packet size=4096"
  
   da = New SqlDataAdapter("select employeeid,lastname,firstname,city from employees", cnn)
  
   da.Fill(ds, "employees")
  
  (3) 说明:
  
  ·关于 security=sspi的解释
  
  集成安全性 -或-
  
  Trusted_Connection
  
  
  'false'
  

ASP.NET笔记》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13239.html


关键字:

关于《ASP.NET笔记》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td