我的asp.net笔记.(嘿嘿,试着来一下)

ASP.NET 笔记

时间 :2003 年 1 月 14 日

主题 : DataGrid 控件的 再开发

一、问题提出

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

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

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

·示例中没有充分使用 VS 这样的工具,其 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 中加入:

< appSettings >

1<add key="  ConnectionString  " value="data source=TMS\  NETSDK  ;initial  catalog=  Northwind;integrated  security=  SSPI;persist  security info=  False;workstation  id=  TMS;packet  size=4096"></add>

(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

|

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

---|---

Published At
Categories with Web编程
Tagged with
comments powered by Disqus