随笔 - 136
文章 - 0
评论 - 36
阅读 -
17万
随笔分类 - ADO.NET
ASP.NET 3.5核心编程学习笔记(25):GridView控件
摘要:几乎不需缩写代码的双向数据绑定是GridView控件最瞩目的功能,但其他相对于DataGrid的改进之处也不胜枚举,这些改进包括:可定义多个主键字段、新的列类型、样式和模板选项。GridView的属性 GridView的SortDirection和SortExpression属性用于指定当前列排序的方向和排序表达式。当用户单击某个列的标头时,这两个属性会由该控件的内建排序机制设置。整个排序引擎的开关取决于AllowSorting属性。EnableSortingAndPagingCallbacks属性用于指示该控件是否使用脚本回调功能进行分页和排序,有了该功能,我们不必执行到服务器的往返交互,.
阅读全文
ASP.NET 3.5核心编程学习笔记(23):Linq-to-SQL 数据的更新、事务、存储过程、函数
摘要:一旦实体对象被加载到内存中,插入新订单的工作就非常简单,无非是创建Order类的实例并将其添加到客户对象的Orders集合中。Linq-to-SQL会跟踪数据上下文中的更改,并在调用数据上下文对象的SubmitChanges时将那些更改传回数据库。下例显示了一个更改数据的过程:string id = "ALFKI";Customer c = dataContext.Customers.SingleOrDefault(c => c.CustomerID == id);if(c != null){ //修改数据 c.Address = "123 Flowers
阅读全文
ASP.NET 3.5核心编程学习笔记(22):LINQ与SQL的交互、延迟加载与预加载
摘要:LINQ查询运算符可以处理内存中可查询的.NET类型实例。可查询的.NET类型是指那些实现IEnumerable接口或继承于IQueryable<T>泛型接口的类型。数组List、Dictionary及.NET Framework中的其他集合类型都是可查询的。 XML和DataSet不能直接查询,因为二者都没实现IEnumerable接口。为此,在使用前,我们需要对它们进行特殊处理,该过程会调用DataSet上的AsEnumerable方法和XML文档的XDocument.Load方法时执行。 LINQ与SqlCommand对象不同的是,在开始对数据进行操作时,查询才会隐式地执行。
阅读全文
ASP.NET 3.5核心编程学习笔记(21):LINQ查询语法
摘要:从本质上讲,Linq-to-SQL能够将类与方法映射到数据源对象上。LINQ概述 大多数应用程序以某种数据仓库为中心。多年来,架构师在设计应用程序的过程中,一直通过对象对问题域进行建模。这些对象包括用于连接到数据访问层的连接,来艰难地与数据库进行交互,并通过对象模型建立关系模式。但这种方式对于简单的应用程序显得有些繁琐。 LINQ的出现就是为了解决这些简单应用程序的需求,为其提供一套功能强大且易用的工具,能在更高的概念层上对数据存储进行操作。 .NET 3.5版本中的编程语言能进行局部类型推断,var关键字正是为此而引入的。从本质上讲,它允许我们声明一个变量,而不指定实现的类型。编译器会根据.
阅读全文
ASP.NET 3.5核心编程学习笔记(20):ObjectDataSource控件
摘要:ObjectDataSource类可将用户定义的类中方法的输出与数据绑定控件相关联。ObjectDataSource类对其所封装的类有一定的要求,并不是所有的类都能配合该数据源控件使用。具体来讲,可绑定类必须有默认的无参数构造函数,方法在语义上对应选择、更新、插入和删除操作。此外,该对象每次只能更新一项,不支持对其状态进行指更新。ObjectDataSource的编程接口 ObjectDataSource组件基本提供了SqlDataSource的编程接口,此外还添加了3个事件和几个属性。ObjectDataSource能引发的事件与其所绑定的底层业务对象的生存期有关--ObjectCreat.
阅读全文
ASP.NET 3.5核心编程学习笔记(19):数据源组件、SqlDataSource控件
摘要:数据源控件代表若干已命名的数据视图,每个视图能管理一个数据集合。该数据与数据源控件关联,通过SQL式的操作(Select、Insert、Delete和Count)进行管理,能够实现排序与分页。数据源控件有两种--表格式数据源和层次型数据源。下表对数据源控件做了简要说明: 注意,SqlDataSource类并不只针对SQL Server,它还可以连接到任何能够管理关系型数据的ADO.NET提供程序。层次型数据源控件参见下表: 注意,数据源控件不会被显示在页面上,它们之所以被实现为控件是为了“以声明方式存在”(在请求的处理过程中被实例化),作为aspx源代码的原始部分,以便能访问页面的视图状态。.
阅读全文
ASP.NET 3.5核心编程学习笔记(18):数据绑定表达式
摘要:简单数据绑定 数据绑定表达式是由<%...%>包裹的可执行代码,以#号为前缀。它可以通过DataBoundLiteralControl类的实例以编程方式加以管理。 数据绑定表达式通常从数据源获取数据,但并不是说它一定要从数据源获取数据,只要返回绑定的数据,任何可执行代码都是可以接受的。它仅在控件的DataBinding事件被触发时才执行计算。 示例:<asp:label runat="server" Text='<%# DataTime.Now %>' /> 如果要对表达式用引号,应选择单引号。 我们在页面中定义的数据绑定
阅读全文
ASP.NET 3.5核心编程学习笔记(17):基于数据源的数据绑定
摘要:从总体上讲,ASP.NET数据绑定模型可以分为三部分:数据绑定表达、传统数据源、数据源控件。可用的数据源 在ASP.NET中,任何一个暴露IEnumerable接口的对象,都是有效的可绑定数据源。IEnumerable接口定义了一个用于枚举数据源内容的方法:public interface IEnumerable{ IEnumerator GetEnumerator();} 具体来讲,我们可以将Web控件绑定到以下类上: 1. ADO.NET容器类(如:DataSet、DataTable、DataView) 2. 数据读取器 3. 自定义的集合、字典、数组 DataSet和DataTable.
阅读全文
ASP.NET 3.5核心编程学习笔记(16):DataTable、DataView
摘要:DataTable对象 下面的代码演示了如何在DataSet中创建表: DataSet ds = new DataSet(); //创建表 DataTable table = new DataTable(“Employees”); table.Columns.Add(“ID”, typeof(int)); table.Columns.Add(“Name”, typeof(string)); //添加行数据 DataRow row = table.NewRow(); row[“ID”] = 1; row[“Name”] = “Joe”; table.Rows.Add(row); //将表添加到D
阅读全文
ASP.NET 3.5核心编程学习笔记(15):DataSet
摘要:DataSet类是ADO.NET对象模型中的主要组件,ADO.NET容器类与使用的数据源无关,也不保存任何与特定数据源有关的信息。DataSet对象 DataSet对象实现了3个重要的接口: 1.IListSource使其能返回元素的可绑定数据列表。 2. ISeralizable使其能够控制数据序列化的方式,以便传给.NET格式化程序。 3. IXmlSerializable使其能将自身序列化为XML。 下表列出了DataSet类的属性: Namespace和Prefix属性会影响DataSet将自身序列化为XML的方式。DataSet的名称用于设置XML文档的根节点。如果DataSetN.
阅读全文
ASP.NET 3.5核心编程学习笔记(14):DataAdapter
摘要:数据适配器 数据适配器对象充当数据源与DataSet对象间的双向桥梁。DataSet是一种非连接的数据容器,适配器负责对它进行填充,并能把它的数据提交给特定的数据源。 命令与数据适配器最大的不同在于获取数据后的返回方式。查询命令能返回一种只读、只进的游标—数据读取器。数据适配器能执行数据访问,获取所有数据,并将其打包在内存容器中—DataSet或DataTable。其实,数据适配器是一种额外的抽象层,构建于命令/数据读取器对之上。数据适配器在内部会使用命令进行查询,使用数据读取器遍历所有记录,并填充给用户的DataSet。SqlDataAdapter类 数据适配器类继承于DbDataAdapt
阅读全文
ASP.NET 3.5核心编程学习笔记(13):SQL Server 2005中特有的改进
摘要:获取自定义类型 SQL Server 2005支持所有CLR类型,除默认类型外,我们还可在SQL Server中存储和获取任何有效的.NET类型对象。其中包括系统类型(如Point)和用户定义的类。下面的代码演示了如何从表(MyCustomers)中获取用户自定义类(Customer)实例: String cmdText = “Select CustomerData From MyCustomers”; SqlConnection conn = new SqlConnection(connStr); using(conn) { SqlCommand cmd = new SqlCommand(c
阅读全文
ASP.NET 3.5核心编程学习笔记(12):SqlCommand、SqlDataReader、事务
摘要:命令的执行 ADO.NET对象模型提供物两种类型的命令对象:一种是一次性的命令,另一种是数据适配器。一次性命令用于执行SQL命令或存储过程,返回的是一种游标。如果使用游标,那么连接必须处于打开状态。数据适配器是一个功能更强大的对象,内部使用的也是命令和游标。它用于获取数据,并将其加载到容器类中—DataSet或DataTable。客户端应用程序可以在不与数据源连接的情况下处理数据。SqlCommand类 SqlCommand代表SQL Server语句或存储过程,派生自DbCommand类,实现了IDbCommand和ICloneable接口。命令在连接上下文中执行,也可使用事务。其构造函数如
阅读全文
ASP.NET 3.5核心编程学习笔记(11):SqlConnection、连接池
摘要:.NET数据提供程序的构成 .NET数据提供程序的功能分为两类:非连接的数据支持、连接的数据支持。 下表列出了.NET数据提供程序的主要组件: 上表中组件的实现是基于一组接口定义的方法和属性,见下表:提供程序工厂模型 从2.0版本开始,ADO.NET提供程序的架构得到了改进,引入了工厂类。每种.NET数据提供程序都包含继承于基类DbProviderFactory的工厂类。工厂类代码各自指定提供程序的公共入口,下表列出了工厂类的主要方法: 如果获取某种提供程序的工厂呢?我们可使用一个新引入的类DbProviderFactoryies,该类有几个静态方法。示例代码: DbProviderFacto
阅读全文
Linq To Sql 笔记
摘要:Linq To SQL 无非是把合法的Linq查询表达式应用于存储在关系数据库中的数据。除查询本身外,Linq To SQL还提供了许多位于System.Data.Linq.dll程序集中的类型,便于代码库与物理数据库引擎间的数据交互。 Linq To SQL的主要目的是在关系数据库和它们进行的交互编程逻辑间提供一致性。通过使用Linq查询表达式和定义的实体类,及DataContext类型,你可以进行所有预期的数据库的增、删、改、查操作,及定义事务性上下文,创建新的数据库实体或整个数据库、调用存储过程和其他以数据库为中心的活动等。 此外,Linq To SQL中的类型可与标准的ADO.NET.
阅读全文
Linq To DataSet笔记
摘要:回顾DataSet和DataTable 使用各种DataSet和DataTable索引器时,可通过一种相当直接却是弱类型的方式来数据交互。例如:static void PrintDataWithIndexers(DataTable dt){ //输出DataTable for(int curRow = 0; curRow < dt.Rows.Count; curRow++) { for(int curCol = 0; curCol < dt.Columns.Count; curCol++) { Console.Write(dt.Rows[curRow][curCol].ToStri
阅读全文
使用Enumerable.OfType<T>扩展方法实现非泛型集合的Linq查询
摘要:Linq查询运算符设计用于任何实现了IEnumerable<T>接口的类型。但System.Collections中传统的非泛型容器类未实现IEnumerable<T>接口,在这些非泛型容器上怎样执行Linq查询呢? 我们可以使用扩展方法Enumerable.OfType<T>()扩展方法将非泛型容器转换为IEnumerable<T>类型后,再执行查询。Enumerable.OfType<T>扩展方法的原型为: public static IEnumerable<T> OfType<T>(this IEnume
阅读全文
Linq查询的延迟执行
摘要:Linq查询表达式在我们迭代内容前,不会真正进行运算,这叫做延迟执行。这种方式的好处是可以为相同的容器多次应用相同的Linq查询,而始终获得最新的结果。 示例代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TestVar{ class Program { //Linq查询的延迟执行示例 static void Main(string[] args) { int[] intAry = new int[] { 1, 2, 3, 4, 5, 6 }; //为.
阅读全文