首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
wangchinaking (57)
yjz0065 (113)
coofucoo (105)
Drate (69)
lphpc (30)
smallnest (61)
iiprogram (64)
downmoon (32)
danny_xcz (49)
btbtd (81)
CSDN - 文档中心 - .NET 阅读:5679   评论: 1    参与评论
标题   我的asp.net笔记.(嘿嘿,试着来一下)     选择自 mint 的 Blog
关键字   asp.net,dataset,datagrid
出处  

ASP.NET笔记

时间:2003 114

主题:DataGrid控件的再开发

一、问题提出

1Microsoft教程中DataGrid控件与DataSet配合存在的问题

MicorsoftQuickStart教程中使用DataGridDataSet配合来显示数据。它的示例可以非常方便的使用VS向导来加以实现,只需写少量的代码。但在效率上存在以下问题:

·DataGrid控件的每次显示都要进行DataBind,而每次DataBind都要重新读入数据库中当前使用表的所有需要数据到DataSet中。这在实际使用中几乎是不可以被接受的。

·示例中没有充分使用VS这样的工具,其aspx文件中连接字符串不可共享。事实上,我们常常要在自己的机器上进行文件调试。然后把文件上传到服务器上,此时,数据库的XXXConnection字符串经常要进行相应的修改,而这样的字符串又分布在不同的文件的不同地方,修改让人提心吊胆(怕有遗漏)。事实上,大多数都是使用的相同的数据库,即相同连接。

2DataSet的尴尬

Microsoft定下DataSet的目的到底是什么?现在的我有点迷惑:

作为初学者,我觉得DataSet真是个好东西。当时我仅花了两行代码加Vs 向导就用DataGrid显示出了所有的表中的内容;这一切使得用为DataSet就这样简单。

然而,我很快乐不起来了。DataSet在默认下一次把所有的相关内容全装入到内存中,而不是只装入需要显示的内容。MS的文档说DataSet适用于需要反复进行临时修改的数据,但我还是很迷惑:因为,DataSet不是公用的。换句话说,每个用户都会有它的DataSet,这样的DataSet一般不是一个,因为ViewState中不保存DataSet,所以每次进行PostBack之前,它一般应当进行CacheSession,这样,服务器的内存就有两份DataSet。假定每个DataSet1M(很小的表),那么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中加入:

<appSettings>

              <add key="ConnectionString" value="data source=TMS\NETSDK;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'

该连接是否为安全的连接。可识别的值有“true”、“false”和“sspi”,后者等效于“true”。

·关于persist security info=False的解释:

如果“持续安全信息”值设置为 false(默认),则返回的连接字符串与用户设置的 ConnectionString 相同但去除了安全信息。除非将“持续安全信息”设置为 true,否则 SQL Server .NET 数据提供程序持续或返回连接字符串中的密码。

******以上解释有点不是很清楚

·关于WorkStation id的解释

用户 ID

 

SQL Server 登录帐户

工作站 ID

本地计算机名称

连接到 SQL Server 的工作站的名称。

·关于ConfigurationSettings的说明:

提供对指定配置节中的配置设置的访问,无法继承。

公共属性

公共属性静态(Visual Basic 中为 Shared)AppSettings

获取 <appSettings> 元素配置节中的配置设置。

公共方法

公共方法静态(Visual Basic 中为 Shared)GetConfig

返回用户定义的配置节的配置设置。

 

 


相关文章
对该文的评论
5drush ( 2003-01-17)
看看petshop或者是IBUYSPY的例子就知道,DATASET并不适合用在WEBFORM中,DATASET的真正用途是基于WINFORM CLIENT的WEB SERIVCE数据传输载体。