最常使用的对象基本上有三种:连接、命令和数据集。
- 连接表示与某些数据存储区(如 SQL Server 或 XML 文件)的物理连接。
- 命令表示从数据存储区检索(选择)或对数据存储区进行操作(插入、更新、删除)的指令。
- 数据集表示应用程序使用的实际数据。注意,数据集总是同它们的源连接和数据模型断开并可独立
修改。不过,数据集的更改可以很容易与起始数据模型相协调。
使用数据集的好处是它为您提供了断开连接的数据库视图。可以在应用程序中操作数据集,然后在以后协
调更改和实际的数据库。对于长期运行的应用程序,这通常是最好的方法。对于 Web 应用程序,通常对
每个请求执行短操作(一般只是显示数据)。通常不需要在一系列请求间保持 DataSet 对象。对于这类
情况,可以使用 SqlDataReader。
SqlDataReader 对从 SQL 数据库检索的数据提供仅向前的只读指针。若要使用 SqlDataReader,请声明 SqlCommand 而不是 SqlDataAdapter。SqlCommand 公开返回 SqlDataReader 的 ExecuteReader 方法。还请注意,当使用 SqlCommand 时,必须显式打开和关闭 SqlConnection。
重要说明:始终记住在页完成执行之前关闭与数据模型的连接。如果不关闭连接,则可能会在等待页实例被垃圾回收处理期间不经意地超过连接限制。
Server=(local);中的local,这样设置可以避免由于服务器IP地址变更而造成网站不能访问
常用的数据库绑定代码
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "作者");
MyDataGrid.DataSource=ds.Tables["作者"].DefaultView;
MyDataGrid.DataBind();
当执行不要求返回数据的命令(如插入、更新和删除)时,也使用 SqlCommand。该命令通过调用 ExecuteNonQuery 方法发出,而该方法返回受影响的行数
DefaultView 属性表示 DataSet 中表的当前状态,包括应用程序代码所做的任何更改(例如,行删除或值更改)。设置了 DataSource 属性后,调用 DataBind()
填充控件。
MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;
MyDataGrid.DataBind();
与MyDataGrid.DataSource=ds;
MyDataGrid.DataMember="Authors";
MyDataGrid.DataBind();等效
重要说明: 注意 DataGrid 的 EnableViewState 属性已设置为 false。如果每个请 求中都要填充数据,让 DataGrid 存储将通过往返行程由窗体发送来发送的状态信息没有 好处。因为 DataGrid 在维护状态时存储其所有数据,适当时将其关闭很重要,这样可以 提高页面性能。
执行参数化选择代码
String selectCmd = "select * from Authors where state = @State";
SqlConnection myConnection = new SqlConnection("server=(local) \\NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, myConnection);
myCommand.SelectCommand.Parameters.Add(new SqlParameter ("@State", SqlDbType.NVarChar, 2));
myCommand.SelectCommand.Parameters["@State"].Value = MySelect.Value;
DataSet ds = new DataSet();
myCommand.Fill(ds, "作者");
MyDataGrid.DataSource= ds.Tables["作者"].DefaultView;
MyDataGrid.DataBind();
|
对任何网格的共同要求是能够将它包含的数据排序。虽然 DataGrid 控件不为您显式排序它的数据,但它确实提供一种方法,在用户单击可用来排序数据的列标头时调用事件处理程序。当 DataGrid 的 AllowSorting 属性设置为 true 时,它呈现将 Sort 命令激发回网格的列标头的超级链接。将 DataGrid 的 OnSortCommand 属性设置为当用户单击列链接时要调用的处理程序。列的名称作为 DataGridSortCommandEventArgs 参数上的 SortExpression 属性传递,该参数可用来设置绑定到网格的 DataView 的 Sort 属性。下面的示例说明此过程。
<script>
protected void MyDataGrid_Sort(Object Src, DataGridSortCommandEven tArgs E) {
...
DataView Source = ds.Tables["Authors"].DefaultView;
Source.Sort = E.SortExpression;
MyDataGrid.DataBind();
}
</script>
<form runat="server">
<ASP:DataGrid id="MyDataGrid" OnSortCommand="MyDataGrid_Sort" AllowSorting="true" runat="server" />
</form>
<script>
Protected Sub MyDataGrid_Sort(Src As Object, E As DataGridSort CommandEventArgs)
...
DataView Source = ds.Tables("Authors").DefaultView
Source.Sort = E.SortExpression
MyDataGrid.DataBind()
End Sub
</script>
<form runat="server">
<ASP:DataGrid id="MyDataGrid" OnSortCommand="MyDataGrid_Sort" AllowSorting="true" runat="server" />
</form>
<script>
protected function MyDataGrid_Sort(Src:Object, E:DataGridSort CommandEventArgs) : void {
...
var Source:DataView = ds.Tables["Authors"].DefaultView;
Source.Sort = E.SortExpression;
MyDataGrid.DataBind();
}
</script>
<form runat="server">
<ASP:DataGrid id="MyDataGrid" OnSortCommand="MyDataGrid_Sort" AllowSorting="true" runat="server" />
</form>
|
在本节开始已经提到,DataSet 以独立于实际数据源的方式被设计为抽象数据。通过将示例的重点从 SQL 改为 XML,可以明白这一点。DataSet 支持将 FileStream 对象用作参数的 ReadXml 方法。在这种情况
下读取的文件必须同时包含希望读取的架构和数据。
也可以分别读取数据和架构,使用 DataSet 的 ReadXmlData 和 ReadXmlSchema 方法
- 公共语言运行库的托管数据访问 API 抽象数据并用一致的方式表示它,与实际的数据源(SQL Server、OLEDB、XML 等)无关。
- 为了使页能够访问执行 SQL 数据访问所需的类,必须将 System.Data 和 System.Data.SqlClient 命名空间导入到页中。
- 从 SQL 查询填充数据集涉及创建 SqlConnection、将 SqlDataAdapter 对象与包含查询语句的连接关联和从命令填充数据集。
-
DataGrid 控件支持采用 IEnumerable(或 ICollection)类型的 DataSource 属性。通过分配 DataSet 的 DefaultView 属性(DataView 类型),可以将此设置为 SQL 查询的结果。
-
SqlDataAdapter 维护一个可用于用值替换变量标识符(由名称前的“@”表示)的 Parameters
集合。
- 当执行不要求返回数据的命令(如插入、更新和删除)时,使用 SqlCommand,而不是 SqlDataAdapter。该命令通过调用 ExecuteNonQuery 方法发出,而该方法返回受影响的行数。
- 使用 SqlCommand 时必须显式打开 SqlConnection(SqlDataAdapter 自动地为您处理打开连接)。始终记住在页完成执行前关闭与数据模型的 SqlConnection。如果没有关闭连接,则可能会在等待页实例被垃圾收集回收时不经意超过连接限制。
- 为了允许对行进行编辑,DataGrid 支持整型 EditItemIndex 属性,该属性指示网格的哪一行应该
是可编辑的。设置了该属性后,DataGrid 按该索引将行呈现为文本输入框,而不是简单的标签。
-
DataGrid 公开一个可设置为主键字段名的 DataKeyField 属性。在连到 UpdateCommand 的事件
处理程序中,可以从 DataGrid 的 DataKeys 集合检索键名。
- 使用 DataGrid 中的 BoundColumn 控件使您可以完全控制列的顺序,以及它们的 ReadOnly 属性。
- 使用 DataGrid 中的 TemplateColumn 控件使您可以完全控制列的内容。
-
ButtonColumn 控件可用于在该列的每一行中仅呈现按钮控件,而该列可与事件关联。
-
HyperLinkColumn 可以添加到 DataGrid 的 Columns 集合,该集合支持在单击链接时定位到另一页。
- 当 DataGrid 的 AllowSorting 属性设置为 true 时,它呈现将 Sort 命令激发回网格的列标头的
超级链接。将 DataGrid 的 OnSortCommand 属性设置为当用户单击列链接时要调用的处理程序。
-
DataSet 支持将 FileStream 作为参数的 ReadXml、ReadXmlData 和 ReadXmlSchema 方法,而该参数可用于从 XML 文件填充 DataSet。
- 使用存储过程可以减少在应用程序中执行繁重的数据库操作的开销。
DataList 和 Repeater 也支持 DataSource 属性,该属性(DataSource)可设置为任何 ICollection、IEnumerable 或 IListSource 类型
分享到:
相关推荐
ASP.Net快速入门学习笔记
Asp.net core2.0快速入门笔记(又名七日速成),个人学习笔记,一个完整视频笔记记录
ASP.NET Core学习教程,详细学习文档,可以学习到详细的基础知识和部分的实践。
WebAPI 是一种传统的方式,用于构建和暴露 RESTUI风格的Web服务。... WebAPI使用控制器(Controllers)和动作方法(ActionMethods)的概念、通过路由配置将请求映射到相应的方法上。 开发人员可以使用各种属性和过滤器来...
VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...
主要介绍了ASP.NET预备知识,内容很全面,几乎涵盖了asp.net预备知识点,感兴趣的小朋友可以看一看。
ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他...
Asp.net MVC2学习笔记-简单实例
从零开始学ASP.NET Core与EntityFramework Core_课程练习笔记作者:梁桐铭-微软最杰出专家(Microsoft MVP)网址: ://www.52abp.com/yoyomooc/aspnet-core-for-beginners- [目录] 一,使用VS2019创建ASP.NET Core ...
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
Asp.Net Core 学习笔记系列博客: C#语言学习系列博客: 相关博文推荐: 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项目文件的AspNetCoreHostingModel属性。 ...
B2C简单的购书网站前台(2005 asp.net源码) 一个用struts框架写的bbs论坛 ASP.NET与EXCEL交互详解及技巧 java 面试题大集合包括名大公司 《iPhone开发基础教程》.pdf (中文完整版) 使用C++实现录音的源码 ...
asp .net Label控件 用javascript操作 asp .net TextBox控件 下 用javascript操作asp.net label控件 外一篇 用javascript改变onclick调用的函数 用JavaScript加密保护网站页面 用Javascript检测网速...
不喜欢写那种"学习笔记"式的文章. 同时本系列将很快全部写完(有工作压力就是有动力), 随后如果时间允许我会继续更新MVC系列文章.再一次对等待MVC文章的朋友们说声抱歉! 另外本系列文章的大部分知识点来源于图灵...
此文的目的是记录自己学习j2ee的一些过程。 这理解过程中可能有一些错误,如果高手看到了我的文章希望能够替我指正,感激不尽!!! 同时也希望能从一个初学者的角度去理解一些东西为后来学习j2ee的人提供一些...
* 这本电子书严格来说是我复习C#基础知识来的,我从09年初开始使用asp.net进行b/s开发,之前一直使用asp。在实际开发中深感C#的强大,也深深感到自身基础知识的欠缺,因此重新从头开始学习C#,在学习的过程中最主要...