ADO NET使用经验集

合集下载

ADO.NET学习笔记(教程)

ADO.NET学习笔记(教程)

连接SQLSERVER数据库连接字符串:Data Source=localhost; AttchDBFilename=|DataDirectory|\Database1.mdf; Initial Catalog=UserDate; Integrated Security=True参数说明:Data Source表示数据源,其值为服务器地址和实例名,如果是正式版则不用加SQLEXPRESS,如果是免费版,必须加上SQLEXPRESS,即连接本机可以写成“.\ SQLEXPRESS”;AttchDBFilename表示附加数据库,其值为附加数据库的地址,DataDirectory代表当前项目目录下的App_data目录,是数据库的默认存储路径;Initial Catalog为数据库,其值为当前连接所要连接的数据库名称注:如果要使用Sqlconnection对象,必须导入System.Data.Sqlclient命名空间中的连接等资源都实现了IDisposable接口,可以使用using进行资源管理。

也可以使用try……catch语句块括起来,但是using是最简单的。

代码语句:using (SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True")){程序语句块;}或者:SqlConnection cnn = new SqlConnection();//创建SqlConnection对象的一个实例cnn.ConnectionString = "Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True";cnn.Open();注:using的作用是及时的释放资源,在花括号结束的时候,程序会自动释放语句所申请的内存,以达到程序的最优。

第11章使用ADO.NET数据库

第11章使用ADO.NET数据库

11.4.2 使用DataGridView显示数据
• 【本节示例参考:\源代码\chapter11\11.4.2\DataGridViewExample】 • DataGridView控件的使用也非常傻瓜化,下面通过一个完整的实例来学习
DataGridView的使用。 • (1)添加控件到窗体。在工具箱中添加一个DataGridView控件和一个
• 了解后,下面介绍怎样用操作数据库。以及如何 通过System.Data.SqlClient命名空间提供的数据对象模型操作 SQL Server 2005数据库。本节模拟一个超市管理系统,对超市物 品进行增、删、改、查等操作。
11.2.1 创建数据库
• 为了完成本章的项目,需要创建一个超市物品信息管理数据库。 关于数据库的学习不是本书的重点,所以在此不作详细介绍。读 者只须按照下面的步骤进行数据库的创建。
• 提供了从应用程序到数据库的访问技术,在应用程序和数据库之 间架起了一座桥梁,如图11.2所示。主要分为两个部分,如图 11.3所示。其中DataSet数据集提供了独立于数据源的数据访问方 法,.NET Framework数据提供程序提供了只进、只读的数据访问方法。
11.2 用操作数据库
11.4 数据操作多面手:DataGridView控件
• 通过以上的学习,我们基本掌握了操作数据库的两种方法。 DataSet断开式数据库操作也有很多的优点,比如便于与控件绑定、 易于持久化、数据可排序、跟XML良好结合等。其中,跟控件绑定 的方式让C#的数据库程序开发显得如此简单和快速。本章将向大 家介绍一个数据显示及操作多面手:DataGridView控件。
11.2.3 使用命令更改数据库
• 【本节示例参考:\源代码\chapter11\11.2.3\CommandExample】 • 作为超市管理系统,管理员需要做货物增加、查询等操作,如果用户购买

ADONET基本使用

ADONET基本使用

一.绑定combobox:1.加入命名空间(using System.Data.SqlClient)2.确定操作代码的放置位置(窗体加载事件双击窗体系统自建的方法)3.确定连接字符串(在服务器资源管理器中创建数据源,从数据源属性中获取连接字符串)4.创建连接对象SqlConnect con=new SqlConnect(连接字符串)5.打开连接对象con.Open();6.创建sql语句select * from 表名7.创建适配器SqlDataAdapter da=new SqlDataAdapter(sql语句,con)8.创建数据集DataSet ds=new DataSet()9.填充数据集da.Fill(ds,自定义表名)10.绑定绑定combobox的数据源bobox的控件名称(以cbo开头).DataSource=ds.Tables[自定义表名]11.绑定combobox中下拉列表中显示的值bobox的控件名称(以cbo开头).displayMember=表中字段类型为nvarchar的字段名12.绑定combobox中valueMember bobox的控件名称(以cbo开头).valueMember=表中字段类型为int的字段名13.关闭连接con.Close();二.添加数据1.加入命名空间(using System.Data.SqlClient)2.确定操作代码的放置位置(双击Button按钮系统自建的方法)3.确定连接字符串(在服务器资源管理器中创建数据源,从数据源属性中获取连接字符串)4.创建连接对象SqlConnect con=new SqlConnect(连接字符串)5.打开连接对象con.Open();6.创建sql语句insert into 表名values (列名1所对应的值,列名2所对应的值,列名3所对应的值...) 注意:不要添加标识列,列名的顺序和列所对应的值要对应7.创建预处理对象SqlCommand com=new SqlCommand(sql语句,con)8.获取数据(受影响行数) int count= com.executeNoneQuery();9.处理数据(判断是否添加成功)if(count==1){}10.关闭连接con.Close();三.绑定DataGridView1.加入命名空间(using System.Data.SqlClient)2.确定操作代码的放置位置(窗体加载事件双击窗体系统自建的方法)3.确定连接字符串(在服务器资源管理器中创建数据源,从数据源属性中获取连接字符串)4.创建连接对象SqlConnect con=new SqlConnect(连接字符串)5.打开连接对象con.Open();6.创建sql语句select * from 表名7.创建适配器SqlDataAdapter da=new SqlDataAdapter(sql语句,con)8.创建数据集DataSet ds=new DataSet()9.填充数据集da.Fill(ds,自定义表名)10.绑定绑定DataGridView的数据源this.DataGridView的控件名称(以dgv开头).DataSource=ds.Tables[自定义表名]11.关闭连接con.Close();四.绑定ListView1.加入命名空间(using System.Data.SqlClient)2.确定操作代码的放置位置(窗体加载事件双击窗体系统自建的方法)3.确定连接字符串(在服务器资源管理器中创建数据源,从数据源属性中获取连接字符串)4.创建连接对象SqlConnect con=new SqlConnect(连接字符串)5.打开连接对象con.Open();6.创建sql语句select * from 表名7.创建预处理对象SqlCommand com=new SqlCommand(sql语句,con)8.获取数据(使用SqlDataReader)SqlDataReader dr=com.executeReader()9.处理数据while(dr.Read()){ListViewItem li=new ListViewItem(dr[第一列的列名].toString())li.SubItems.Add(dr[剩余列的列名].toString())...this.ListView的空间名(以lv开头).Items.Add(li); }10.关闭连接dr.Close() con.Close()更多知识请访问www。

ADONET数据库操作技术实验报告

ADONET数据库操作技术实验报告

实验报告题目:数据库操作技术院系:计算机科学与工程学院【实验题目】数据库操作技术【实验目的】1.掌握服务器验证控件的使用。

2.掌握对象的使用方法。

3.初步熟悉数据绑定控件GridView控件的使用方法。

【实验内容】使用DataReader对象设计一个用户登陆身份验证页面,页面打开时用户输入了正确的用户名和密码后,程序根据用户级别跳转到不同的页面。

建立Microsoft SQL Sever数据库manager.mdb的设计,并在其中创建存放用户信息的Admin表。

表中user字段表示用户名,pwd字段表示密码,level 字段表示用户级别,0表示管理员,1表示普通用户(游客)。

程序设计步骤:(1)设计Web页面Web页面的设计并不复杂,使用列表的形式,将Label和TextBox嵌入其中,如图4-1所示。

图 4-1 Web页面的设计(2)设置对象属性此处需要注意的是,密码部分需要做密文处理,并且不可进行复制粘贴。

(3)编写事件代码页面设计完成后,需要对登录按钮编写相应的时间。

其中包括与数据库的连接,获取输入的用户名和密码,之后与数据库进行匹配,并将匹配的结果返回给用户,同时程序根据用户级别跳转到不同的页面。

程序运行结果如图4-2所示。

图 4-2 程序运行结果【实验代码】Default:<%@Page Language="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default" %><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>无标题页</title></head><body><form id="form1"runat="server"><div><table border="1"><tr><td colspan="2"style="text-align: center"><strong><span style="font-size: 14pt">登&nbsp;录</span></strong></td></tr><tr><td style="width: 100px; text-align: center">用户名</td><td style="width: 100px"><asp:TextBox ID="txtUsername"runat="server"Width="146px"></asp:TextBox></td></tr><tr><td style="width: 100px; text-align: center">密&nbsp;码</td><td style="width: 100px"><asp:TextBox ID="txtPassword"runat="server"TextMode="Password" Width="145px"></asp:TextBox></td></tr><tr><td style="width: 100px">&nbsp;</td><td style="width: 100px"><asp:Button ID="btnLogin"runat="server"OnClick="btnLogin_Click" Text="登录"/></td></tr></table></div></form></body></html>using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.OleDb;public partial class_Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.Title = "Reader对象应用示例";txtUsername.Focus();}protected void btnLogin_Click(object sender, EventArgs e){OleDbConnection conn = new OleDbConnection();conn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + Server.MapPath("App_Data/manager.mdb");conn.Open();string strSQL = "select * from Admin";OleDbCommand com = new OleDbCommand(strSQL, conn);OleDbDataReader dr = com.ExecuteReader();string strUsername="", strPassword="",strLevel="";while (dr.Read()){if (txtUsername.Text == dr["user"].ToString() && txtPassword.Text ==dr["pwd"].ToString()){strUsername = dr["user"].ToString();strPassword=dr["pwd"].ToString();strLevel = dr["level"].ToString();break;}}dr.Close();conn.Close();if (strUsername == ""){Response.Write("<script language=javascript>alert('用户名或密码错!');</script>");return;}if (strLevel == "0"){Session["pass"] = "admin";Response.Redirect("manager.aspx");}else{Session["pass"] = "guest";Response.Redirect("guest.aspx");}}}Guest:<%@Page Language="C#"AutoEventWireup="true"CodeFile="guest.aspx.cs"Inherits="guest"%><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>无标题页</title></head><body><form id="form1"runat="server"></form></body></html>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class guest : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.Title = "游客页面";string strPass = (string)Session["pass"];if (strPass != "guest"){Response.Redirect("default.aspx");}Response.Write("这是游客页面");}}Manager:<%@Page Language="C#"AutoEventWireup="true"CodeFile="manager.aspx.cs" Inherits="manager" %><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>无标题页</title></head><body><form id="form1"runat="server"></form></body></html>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class manager : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.Title = "管理页面";string strPass = (string)Session["pass"];if (strPass != "admin"){Response.Write("<script language=javascript>alert('请先登录!');</script>"); Response.Redirect("default.aspx");}Response.Write("这是管理员页面");}}【实验结果】【实验心得】通过本次实验,我的的掌握更加深入,我基本掌握的服务器控件的应用,也基本掌握了GridView控件,熟悉了如何设置这个控件的基本属性,同时也加强了对其他控件的掌握。

ADOMD.NET学习笔记(1)

ADOMD.NET学习笔记(1)

学习笔记(1)⽤于客户端连接多维数据源检索和操纵数据,也可以操纵元数据。

1。

概述是标准的.NET数据提供者,它使⽤⽀持 XML for Analysis version 1.1标准的数据提供者连接数据源,使⽤TCP/IP或 HTTP流传输和接受SOAP请求。

数据可以被检索为多为数据格式并使⽤对象模型。

使⽤也可以通过两种⽅式浏览和操纵元数据:依赖于OLE DB schema rowsets 或对象模型。

2。

分发在应⽤程序中包含的安装,安装后程序位于C:\Program Files\\ADOMD\8.0下。

3:主要对象简介1)AdomdConnection :连接数据源、获取元数据;2)AdomdCommand:执⾏MDX查询,返回CellSet或AdomdDataReader 对象;3)AdomdDataReader:快速有效的读取多维数据⽅法,如同SqlDataReader;4) CellSet :多维数据结果集,如同dataset;5) OlapInfo:表⽰⼀个CUBE的元数据信息,是CellSet的⼀个属性;6)CubeDef:也表⽰⼀个CUBE的源数据信息,它是AdomdConnection的属性;7)AdomdDataAdapter :实现IDbDataAdapter接⼝,对客户端应⽤提供只读⽀持。

4:⽐较ado md和1)ado md依赖于ado提供连接,需要引⽤Adodb.dll和Adomd.dll;引⽤只需Microsoft.AnalysisServices.AdomdClient.dll ,既提供连接⽀持,也提供元数据存取;2) ADO MD的Catalog属性不再⽀持,从数据源检索元数据通过AdomdConnection的Cubes属性;3)不同于ADO MD,CellSet不再⽤于查询结果,⽽⽤于缓存查询结果;4)在ADOMD。

NET中,Position对象或内部⽀持,CellSet存取通过Set和Tuple对象;5)增加了⼀些新的类,提供更好的错误捕获,更好的封装数据和元数据。

1C# 操作ADO NET总结详解

1C# 操作ADO NET总结详解
OleDbDataAdapter da = new OleDbDataAdapter() OleDbCommand myComm = new OleDbCommand(); myConn.Open(); mandType = CommandType.Text; mandText = strSQL; myComm..Connection=myConn; da.SelectCommand = myComm; 从数据源读取数据 : 1、使用 DataSet+DataAdapter 对象 使用 DataSet 对象时一般是调用 DataAdapter 的 Fill()方法来填充数据到 DataSet 对象, 然后读取数据。
myConn.Open(); OleDbCommand myComm = new OleDbCommand(); mandText=strSQL; mandType= CommandType.Text; myComm..Connection=myConn; ............... myConn.Close(); 相比上面一种方式,这种方式更麻烦!鉴于此,还可以这样做:
ConstraintCollection、 DataTableCollection、 DataRelationCollection 等。 连接 SQL Server 数据库: 使用 SqlClient:
data source = MyServer;//服务器 initial catalog = MyDataBase; user id = MyUser; password = MyPassword; 连接到 Access 数据库: 使用 Microsoft.Jet.OLEDB.4.0: Provider=Microsoft.Jet.OLEDB.4.0; Data Source=盘名:\路径名\数据库文件名.mdb; Password=”xxx”; User ID = Admin;

数据访问:使用 ADO_NET 的最佳实践(ADO_NET 技术文档)

数据访问:使用 ADO_NET 的最佳实践(ADO_NET 技术文档)

数据访问:使用 的最佳实践( 技术文档)欢迎您 | 登录中国 - 简体中文Argentina (Español) Australia (English)Brasil (Português)Canada (English)Canada (Français)中国 (简体中文)Colombia (Español)Deutschland (Deutsch)Es paña (Español)France (Français)India (English)Italia (Italiano)México (Español)Perú (Español)Россия (Pусский)United Kingdom (English)United States (English)更多| 产品家族OfficeWindowsWindows Server SystemWindows Mobile开发工具商务管理解决方案(MBS)MSN产品资源Microsoft UpdateOffice Update下载中心客户帮助与支持安全性与隐私保护微软中文社区教育培训与认证活动与培训关于微软微软总部微软中国新闻报道热门栏目MSDNTechNet企业用户合作伙伴硬件产品所有产品 站点地图搜索 MSDN搜索 Windows Live SearchMicrosoft 开发人员网络主页技术资源库学习下载支持社区可打印版本添加到收藏夹提交请单击以进行评分并提供反馈请就此内容提供反馈MSDN LibraryMSDN MSDN 主页MSDN 技术资源库MSDN 学习MSDN 下载MSDN 支持MSDN 社区MSDN Library 开发工具和语言.NET DevelopmentSQL Server技术文章技术文章服务器和企业开发MSDN 开发Office XPOffice 2003Office 2007SQL 2000SQL 2005Visual Studio 2003Visual Studio 2005Visual Studio 2005 SP1MSDN 开发 -- 不使用 Cookie 的 会话管理:风险与利益.NET Compact Framework 中的点对点消息队列.NET Framework 2.0 中的分析器堆栈遍历:基础知识和高....NET Framework 企业安全策略管理与部署.NET Framework应用程序的生产环境调试.NET Remoting 安全性.NET 企业服务性能.NET 体系结构中心.NET 体系结构示例应用程序.NET 数据访问体系结构指南.NET 框架 1.1 可重新分发先决条件.NET 框架中的 XML:在 .NET 框架中使用 XML 架构执行... .NET 框架中的安全性概述.NET 框架可重新分发软件包 1.1 版技术参考.NET 的商业价值.NET 语言集成查询.NET应用体系结构:设计应用和服务 2.0 中的新增 DataSet 功能 中的 XML 特性 中的表映射 中的表达式 2.0 和数据绑定控件:新的角度,新的做法 2.0 页面状态持续程序 Jumpstart:Media Share Libra... Jumpstart:构建 Media Share Li... Jumpstart:构建应用程序和网页框架 Web 服务、企业服务和 .NET Remoting ... Web 服务如何工作 中的正则表达式 控件开发速成教程:生成复合控件 服务器控件授权 缓存:方法和最佳实践 调味品:AJAX 页面对象模型ATL Server 与 Advanced Systems Format 概述Avalon 小组介绍 3-D 功能BizTalk Server 2004 上的事务BizTalk Server 2004 和 Web 服务BizTalk Server 2004:消息处理引擎概述BizTalk Server 交换吞吐量分析Broker(代理程序)C# 中的 ListEditorC#锐利体验《Effective C#》翻译札记CLR 中的泛型简介CLR 中的范型详解CLR 的线程池Cheese 游戏编程:第 4 部分DasBlog: 构建一个分布式.NET 协作系统Data Transfer Object(数据传输对象)DataGrid 控件中的汇总行Deployment Plan(部署规划)Direct3D Mobile 驱动程序开发概念Direct3D 环境中的 DirectShow 电影DirectDraw 显示驱动程序DirectX 8.0 简介Doculabs Web 服务基准测试Don Box 论 WSDL 的重要性Dr. GUI .NET 1.1 #0 - 介绍 .NET、Hello...Driver Chain ManagerDuwamish 7 (.NET)EXSLT:增强 XSLT 的功能Excel 脚本编写:系列连载Failover Cluster(故障转移群集)Fitch and Mather Stocks 7 (.NET)(构建... Framework 类库的事件编程Front Controller(前端控制器)Grove——.NET中的ORM实现IBuySpy PortalIBuySpy StorefrontIndigo 简介:初探Intercepting Filter(截取筛选器)Jim 的移动开发人员工具区Layered Application(分层应用程序)ListEditor:一项有用的 XML Web 服务Load-Balanced Cluster(负载平衡群集)经典与现代的结合:在MFC中集成RAD .NET框架MSXML3 性能揭密MapPoint 2004 与 MapPoint Web 服务,该使用... Microsoft .NET Compact Framework 上的...Microsoft .NET Compact Framework 上的...Microsoft .NET Compact Framework 开发...Microsoft .NET Compact Framework 的部...Microsoft .NET Framework 1.1 和 2.0(...Microsoft .NET Framework 3.0 的部署Microsoft .NET Pet Shop 3.0Microsoft .NET Pet Shop 3.x: .NET P...Microsoft .NET Pet Shop 4:将 ...Microsoft .NET Pet Shop(构建分布式应用程序)Microsoft .NET 框架资源基础Microsoft .NET和 IBM WebSphere之间契约优先... Microsoft Active AccessibilityMicrosoft Active Accessibility 体系结构... Microsoft Business Solutions:在 Busi...Microsoft SOAP Toolkit v2_0 常见问题解答(... Microsoft SQL Server 2000 XML 功能概述Microsoft Sudoku:优化 UMPC 应用程序的点触和手写...Microsoft Visual SourceSafe 路线图Microsoft Windows CE .NET 中的中断体系结构Microsoft Windows Workflow Foundati...Microsoft Windows XP Embedded 技术常见问... Microsoft 企业开发策略汇编Microsoft 体系结构概述Microsoft 对 Identity Metasystem 的前瞻 框架 1.1 可重新分发 EULA 框架可重新分发 EULAMinLogon 简介Motion Lite:由 Microsoft Motion 使用的业... MyTracer 监视和跟踪 应用程序Observer(观察器)Offline Application Block 的设计Offline Application Block 配置和安全注意事项Page Cache(页面缓存)Page Controller(页面控制器)Pocket Access 与 .NET Compact Framew...应用Profiler优化SQL Server数据库系统Refactor!——Visual Basic 2005的重构SOA 案例研究:不同应用程序的集成组织SOAP 规范索引页(基准 XML Web 服务规范/SOAP)SOA的挑战:实体集合SOA(面向服务架构): 实现上的挑战SQL Server 用户定义的函数SQL Server 2005的XML数据修改语言(XML DML)SafeInt 类新探Server Clustering(服务器群集)Service Gateway(服务网关)Service Interface(服务接口)SharePoint Web 部件测试清单Silverlight 入门SingletonSmartphone 应用程序安全与代码签名模型开发人员实用指南System.Messaging 性能Tablet 101 专栏 3:笔画和识别Tablet PC 平台独立性Tablet PC 开发须知:在笔画上使用时间戳Tablet PC 手写输入的自定义呈现TaskVision 解决方案概述:设计与实现The North Face In-Store Explorer 概念...Three-Layered Services Application(...Three-Tiered Distribution(三级分布)Tiered Distribution(分级分布)Time Tracker Starter Kit 简介USB 主机控制器驱动程序USB 功能驱动程序Visual Basic 2005 简介Visual Studio 2005 Service Pack 1 (...Visual Studio 2005 Team System: Mic...Visual Studio 2005 Team System:企业级源...Visual Studio 2005 Team System:构建健壮...Visual Studio 2005 Team System:概述Visual Studio 2005 Team System:软件项目...Visual Studio 2005 Team System:通过更完...Visual Studio Team System 商业价值白皮书Visual Studio:Microsoft 开发人员工具路线图Visual Studio:针对 Java 开发人员的 C# 编程语言WMI 脚本入门:第一部分WMI 脚本入门:第三部分WMI 脚本入门:第二部分WS-Security中WSE2.0和SUN JWSDP1.4的协作WS-Security中WSE2.0和SUN JWSDP1.5的协作Web Services Enhancements 1.0 与Java...Web Services Enhancements 1.0和java互...Web 上的 Windows Presentation Foundat...Web 安全威胁与对策Web 安全解决方案一览Web 应用程序威胁建模一览Web 应用程序安全基础Web 应用程序安全性简介Web 服务世界中的可靠消息传送:建议的结构和规划图Web 服务协议专题讨论会过程概述Web 服务和 Microsoft 平台Web 服务和数据集Web 服务在卫生保健 HL7 上的应用 - Web 服务基础实现框架Web 服务安全性Web 服务安全补遗(全球 XML Web 服务规范)Web 服务寻址 (WS-Addressing)Web 服务开发人员中心:安全、可靠、事务化的 Web 服务:结构和组... Web 服务策略断言语言 (WS-PolicyAssertions)Web 服务策略框架Web 服务策略附件Web 解决方案平台Web服务协同工作指导:BEA WebLogic 8.1 SP3 (8...WinFS 101:新型 Windows 文件系统简介WinFS 文件:分而治之Windows CE .NET 和可扩展固件接口 (EFI)Windows CE .NET 应用程序开发:我有哪些选择?Windows CE .NET 耐力测试方案和结果Windows CE .NET 高级内存管理Windows CE 4.2 新增功能Windows CE:在生成系统的内部Windows Communication Foundation 体系...Windows Live Custom Domains Beta SD...Windows Live ID 服务Windows Media Audio Professional 编码...Windows Mobile 2003 Second Edition ...Windows Mobile 2003 之夏Windows Mobile 6 中为开发人员提供的新功能Windows Mobile —新的时代已经开始Windows Mobile 技术文档Windows Presentation Foundation Bet...Windows Presentation Foundation 安全沙...Windows Presentation Foundation 巡游Windows Presentation Foundation 数据绑...Windows Presentation Foundation 数据绑...Windows Server 2003 应用程序环境Windows Server 2003 系列中的 Microsoft ... Windows Vista Developer Story:Direc...Windows Vista Developer Story:优质应用程... Windows Vista Developer Story:应用程序兼... Windows Vista Developer Story:针对用户帐... Windows Vista Developer 文章:互操作性和迁移Windows Vista 开发人员的故事:搜索和组织Windows Vista 显示器驱动程序模型Windows Vista 的 Win32 I/O 取消支持Windows Vista:通信基础结构Windows Workflow Foundation 与 Windo...Windows Workflow Foundation 规则引擎简介Windows Workflow Foundation:创建自定义复合... Windows XP Embedded with Service Pa...Windows XP Embedded 体系结构基础Windows XP Embedded 语言支持概述Windows XP Media Center 中的时间之旅Windows XP Service Pack 2 —为开发人员提供... Windows XP 中的 SOAP 客户端概述XML Litmus 测试XML Notepad 2006 设计XML 专栏:C-Omega 概述XML 命名空间以及它们如何影响 XPath 和 XSLT (Extr... XML 差异和修补 GUI 工具XP Embedded 的双启动提示XSLT Key、Select 与 Match、冲突解决,等等XSLT 和 实用性对比 (Extreme XML)Xinclude,有人使用吗?XmlSerializer 常见问题疑难解答eMbedded Visual Basic 中的点击长按确认office XML的交互性:一个 FAQ 应用程序“Avalon”输入系统“WinFS”OPath 简介“融化奶酪效应”的处理“闪烁灯光”部门一种被忽视的构造和整数溢出重现不同的用户使用不同的外壳程序不返回行的数据操作中断为 .NET Compact Framework 开发能够识别方向和 ...为 Datagrid 创建自定义列为 创建缓存配置对象为 IIS-MTS 开发一个 Visual Basic 组件(COM+...为 Microsoft Windows SharePoint Serv...为 Windows Media Player 9 系列设计辅助外观为 Windows XP Embedded 创建自定义组件为Windows应用创建简单的异步调用模式为提高实时性能,设计和优化 Microsoft Windows CE ...主题地图的介绍了解 Windows NT Embedded 和 Windows XP...了解 XML 架构事务控制互操作性:从 COM 组件调用 .NET 组件(.NET 开发(通用)... 互用性技术:数据层介绍 .NET Framework 3.0从 .NET 应用程序访问 Microsoft Office 数据从ADO“经典”迁移到 从 C++ 向 C# 迁移从 MTS 移植到 COM+ 时保持应用程序的性能(COM+ 技术文章... 从 Pocket Access 向 SQL Server CE 进行数...从 SQL Server 2005 中处理 XML从 XSL 参数中取值从 XSL 转换生成多个输出从列表中删除多个项目从桌面移动到设备:多线程和用户界面代码生成器与 .NET代码访问安全实践以管理员身份安全地浏览 Web 和读取电子邮件以编程方式更改屏幕方向价值驱动的体系结构:连接产品策略与体系结构企业架构整合推理企业架构设计和集成架构框架企业模板和源代码控制企业程序库企业计算中的面向服务优化 Tablet PC 的应用程序伟大架构师的秘密使 Windows Media Player 插件协同工作使用 .NET Compact Framework 2.0 开发多线程...使用 .NET Compact Framework 2.0 生成 Wi...使用 .NET 和后台智能传输服务 API 来编写自动更新应用程序使用 8 位 YUV 格式的视频呈现使用 和 Oracle 进行高级数据访问使用 访问 Oracle 9i 存储过程使用 实现 XML 密钥管理服务( 技术...使用 AYGShell 实现 Windows CE .NET 和 Po...使用 BizTalk Adapter for SQL Server使用 ClickOnce 部署 Windows 窗体应用程序使用 CodeDOM 命名空间将模板的威力带到您的 .NET 应用程序... 使用 IIS 进行 Microsoft 2.0 成员/...使用 IIS 进行 Microsoft 2.0 成员/...使用 InkEdit、InkPicture,增强手写输入外观使用 Microsoft .NET 框架压缩版编写移动游戏使用 Microsoft .NET 的企业解决方案模式使用 Microsoft Outlook 扩展企业应用程序:体系结构设...使用 Microsoft eMbedded Visual Basic ...使用 Offline Application Block 进行开发使用 OrangeGuava Desktop 开发支持手写输入的应用程...使用 SMS 编程的应用程序介绍使用 Tablet PC SDK 进行手写输入分析使用 Virtual Earth 查找事物使用 Visual Studio .NET 重新分发 .NET 框架使用 Visual Studio 2005 设计设备应用程序的用户界面...使用 WSE 2.0 从 WS-Routing 转移到 WS-Addr...使用 Web 标准生成 2.0 Web 站点使用 Windows Form 按列排序 ListView 项目使用 Windows Mobile 5.0 中的图片、视频和照相机使用 Windows PE 和 SDI (Windows XP Emb...使用 Windows Server 2003 授权管理器实现基于角色的...使用 Windows XP Tablet PC Edition 200...使用 Windows 窗体构建 XPath Visualizer使用 Wppackager 打包和部署 Microsoft Share...使用 XMLHTTP 在 SharePoint Team Servic...使用.NET 框架压缩版开发Windows Mobile 2003 f...使用C# 语言为 Microsoft BizTalk Server 2...使用Web Services Enhancement 2.0和支持Ja...使用反射将业务对象绑定到 窗体控件使用多路广播委托实现回调使用宏组件和原型化自动执行生成过程使用客户端激活对象通过 .NET Remoting 实现 Broker使用客户端脚本使用带有 Service Pack 2 的 Windows XP Em...使用智能设备扩展在 C# 中开发自定义控件使用更少的代码保证 应用程序的安全使用服务器激活对象通过 .NET Remoting 实现 Broker使用缓存,节省资金使用自定义验证组件库扩展 Windows 窗体使用自定义验证组件库扩展 Windows 窗体,第 2 部分(Wind... 使用集中式数据缓存机制管理多个平台的详细信息页保护 应用程序的安全保护 Web 服务器的安全保护代码中的数据库连接字符串和其他敏感设置保护应用程序服务器的安全保护网络的安全保留带有附加识别数据的手写输入修改 Web 部件和 Web 部件页的用户界面修改大型 XML 文件的有效方法元数据规范索引页元数据驱动的应用程序设计和开发关于 *.dvr-ms 文件关于 OLE DB 和 .NET 的思考关于 SAX 的一些趣事关于 SOAP 编码的论点兼容性测试方案再次介绍如何在 .NET 应用程序中使用 ADO(深入研究数据访问)再议 .NET 纯粹性神话写入 SMTP 和 Transport 事件的托管接收器决定何时使用 DataGrid、DataList 或 Repeater...分层驱动程序与整体式驱动程序之比较分布式应用程序的建模语言创建 Pocket TaskVision 应用程序创建 Web 部件来显示 SharePoint Portal Serv...创建动态数据输入用户界面创建可分页、可排序的 DataGrid创建用于 .NET Windows Form 客户端的异步业务对象创建能够轻松迁移的应用程序的最佳实施策略指南利用 .NET 3.0 技术构建互操作保险系统利用 .NET Printing 命名空间从 Windows 窗体应用... 利用 创建多页自定义报表利用 的内置功能抵御 Web 攻击利用 ActiveSync 传递连接利用 DataSetNavigator 在数据集上进行 XPath 查... 利用 构建实际解决方案利用 Excel 电子表格中的信息创建用户账户利用 Microsoft Operations Manager 200...利用 SLI进行基于主机的 Web 服务集成利用 SQL Server 2000 Analysis Service...利用WSE 2.0 SP3和WebLogic Workshop 8.1...利用基于表达式的列自由表达利用软件工厂和 Visual Studio Team System 度...前言前言— Mark Boulter剖析 .NET 托管提供程序剖析 批处理更新(深入研究数据访问)加密、密钥和证书加密应用程序块加载设备驱动程序升级 Microsoft SharePoint 产品和技术的 Web ...升级到 Microsoft .NET协定问答:定义服务间的会话 (.NET Designers)协定(企业结构)单一登录 Web 应用程序的企业级安全系统卸除 Hibernate Once/Resume Many 配置中的卷参考中心参考书目反向链接简介可伸缩性,美妙的可伸缩性可信赖计算安全开发生命周期可插拔的编解码器要求可轻松进行的 Windows 事件绑定可靠的 XML Web 服务合并 XML 文件、架构验证和更多功能向 XPath 中添加自定义函数呈现到何处?回到使用智能客户端的将来在 .NET Compact Framework 2.0 中使用 CO...在 .NET Compact Framework 2.0 中宿主 Ac...在 .NET Framework 中表示 XML 的最佳做法在 .NET 中使用 DataSet 实现 Data Transfer...在 .NET 中使用类型化 DataSet 实现 Data Trans...在 .NET 中实现 Observer在 .NET 中实现 Service Gateway在 .NET 中实现 Service Interface在 2.0 中上载文件在 中使用 HTTP 模块实现 Interceptin...在 中使用 HTTPHandler 实现 Front ...在 中使用代码访问安全在 中使用绝对过期实现 Page Cache在 中实现 Model-View-Controller在 中实现 Page Controller在 中执行 URL 重写在 中支持数据库缓存相关性在 BizTalk Server 2004 上实现 UAN 以集成 S...在 C# 中实现 Singleton在 C# 中通过 P/Invoke 调用Win32 DLL在 Intranet 环境中保护 .NET Web 应用程序在 Microsoft CRM 中审核业务数据在Microsoft® .NET Compact Framework...在 SharePoint Portal Server 2003 中生成...在 Tablet PC 上创建交互式手写 Web 页在 Visual Basic .NET 中创建对方法的类型安全的引用之... 在 Visual Basic .NET 中命名和生成程序集在 Web 场中管理安全上下文令牌在 Windows CE .NET 4.1 平台上实现坚固的 Wind...在 Windows CE 上实现网络服务在 Windows Movie Maker 中创建自定义效果和过渡在 Windows Server 2003 授权管理器中使用动态业务规...在 Windows XP Embedded Service Pack ...在 Windows XP Embedded 中进行远程调试、本地化以及...在 Windows XP Embedded 映像中添加多种语言支持在 Windows XP 和 Windows Server 2003 ...在 Windows 中使用远程控制设备在 XML 架构中使用命名空间在 XSource 中淘金在业务层集成 .NET在使用 XPath 查询 XML 文档时应了解和避免的事情 (Extr... 在服务器端 Web 代码中使用线程和生成异步处理程序在源代码行设置断点在离岸软件开发中采用敏捷过程并从中获利在移动 PC 上应用 Windows Vista在蓝辉光中编码在表示层集成 .NET在设计时使用 Microsoft .NET Compact Frame...在软件开发生命周期中使用应用程序验证器在运行时使用 UDDI,第一部分(UDDI 技术文章)在运行时使用 UDDI,第二部分(UDDI 技术文章)在针对 Tablet PC 编写的应用程序中禁用按住不放基本配置增强 Web 服务安全性的新技术增强 XSL(XML 一般技术文章)处理(企业结构)备忘单:Web 应用程序安全框架大都会如何为 Pocket PC 开发能够识别方向和 DPI 的应用程序如何从 与 Enterprise Services 一...如何从 使用 DPAPI(计算机存储)如何使用 CAS 策略约束程序集如何使用 CETK 测试驱动程序如何使用 IISLockdown如何使用 IPSec如何使用 IPSec 实现两台服务器之间的安全通信如何使用 MBSA如何使用 Remote Call Profiler 查找性能问题如何使用 SSL 实现 SQL Server 2000 的安全通信如何使用 URLScan如何使用 eMbedded Visual C++ 4.0 创建用于 W...如何使用来自 的客户端证书调用 Web 服务如何使用远程工具跟踪 Windows CE 应用程序中的内存泄漏如何保护开发人员工作站如何创建一个 DPAPI 库如何创建一个加密库如何创建一个自定义帐户来运行 如何创建自定义加密权限如何利用 SSL 调用 Web 服务如何启用 Windows XP Service Pack 2 上的远程...如何在 Web 服务器上建立 SSL如何在 Windows CE 5.0 中开发和测试设备驱动程序如何在 Windows 服务中承载一个远程对象如何在传统 ASP 和 之间共享会话状态如何实现 Windows 2000 的 Kerberos 委派如何实现修补程序管理如何将一个加密连接字符串存储在注册表中如何将基于角色的安全性用于企业服务如何建立客户端证书如何强化 TCP/IP 堆栈如何维护用于 Pocket PC 和 Smartphone 的单一二进...如何编写支持 WIC 的 CODEC 并获得平台对图像格式的全面支持如何编写用于 SharePoint Portal Server 200...如何调试设备驱动程序如何连接到目标设备以便进行调试如何通过 SQL Server 2000 使用 Forms 身份验证如何:在设计时为 Web 应用程序创建威胁模型威胁建模威胁建模 Web 应用程序学习使用 Microsoft eMbedded Visual C++安全代码审查安全应用程序块安全性体系结构和设计检查安全性:修复那些缓冲区溢出!安全线程同步安全通信安全部署审查实现 Web 应用程序安全的捷径实现互用性设计元素实现异步互用性实用体系结构:逻辑分层容量规划工具(构建分布式应用程序)寄宿多个 应用程序对 Microsoft .NET 框架版本 1 的安全性更改对分层行数据执行的数据操作(构建分布式应用程序)将 2.0 应用程序服务配置为使用 SQL Serve... 将 AnandTech 从 Macromedia ColdFusion...将 GAPI 游戏从纵向模式移植到方形屏幕将 JavaScript 与 2.0 配合使用将 Pocket Outlook 数据集成至基于 Microsoft ...将 SOA 引入 Office 应用程序桌面将 Visual Basic 6.0 应用程序升级到 Visual B...将 Web 项目从 Visual Studio .Net 2002/2...将 XML 文档与 XInclude 合并在一起将 eVB 窗体迁移到 Visual Basic .NET将仪表板 Web 部件转换为 Microsoft SharePoint...将多个项目添加到 SharePoint Team Services 的...将本地数据存储与 Microsoft Outlook 同步已注册的 FOURCC 代码和 WAVE 格式常见的 2.0 转换问题和解决方案常见的 Web 项目转换问题及解决方案应用程序互操作性:Microsoft .NET 和 J2EE应用程序互操作性:互用性基本原理应用程序互操作性:点对点应用程序互操作性:简介应用程序复原:取消锁定 Windows 安装程序的隐藏功能应用程序概念视图应用程序模块化最大限度地提高了从桌面到设备的可移植性应用程序设计指南:从 N 层到 .NET应用程序集成指南应用程序(企业结构)建立企业体系结构的更佳途径开发 IP 电话开发 Windows 64 位版本应用程序的简介开发 Windows Mobile 应用程序: FAQ开发 Windows 瘦客户端开发人员眼中的 WinFS:第二部分开发优先级:乐趣是第一位的开发使用 Web 服务的、连接的 .NET Pocket PC 应用程... 开发有效的 Smartphone 用户界面开发网关开发能够识别 DPI 的应用程序开发识别屏幕方向的应用程序开放打包约定的寻址模式异常处理应用程序块异步工作流体系结构的选择循序渐进:Visual Studio 2005 中的新增本机开发功能循序渐进:使用 Visual Studio 2005 为基于 Wind...循序渐进:将 eMbedded Visual C++ 应用程序迁移到 ... 微调您的 Web 站点以适应 Windows XP Service P...性能比较:事务处理控件(构建分布式应用程序)性能比较:安全性设计选择(构建分布式应用程序)性能比较:.NET Remoting 与 Web 服务总线驱动程序想知道我正在听什么吗?打包和部署 Microsoft Windows SharePoint ...扩展 2.0 资源提供程序模型扩展 Windows Server 2003 中的群集管理器拖放 DataGrid 列按照 .NET 方式公开专有数据掌握 之路:自定义实体类简介掌握 C#探究 Singleton 设计模式(构建分布式应用程序)探究观察者设计模式探索 Windows Server 2003 中的 S4U Kerbe...探讨 DataRow探讨 的可伸缩性提供和修改 MapPoint Web Service 地图图像提高 Web 应用程序安全性:威胁和对策摆弄音乐文件支付处理的IFX服务定位研究支持 XML Web 服务的 Office 文档 (Extreme X...支持基于 Windows XP Embedded 的设备支持语音的 Fitch and Mather Stocks:设计与实现改进 RSS Bandit 应用程序教程步骤 1:为 CEPC 创建自定义 OS 设计教程步骤 1:为模拟器创建自定义 OS 设计教程步骤 1:创建编录项文件教程步骤 2:为 CEPC 生成自定义运行库映像教程步骤 2:为模拟器生成自定义运行库映像教程步骤 2:添加实现教程步骤 3:为 CEPC 创建启动软盘教程步骤 3:插入链接教程步骤 3:设置到模拟器的连接并下载运行库映像教程步骤 4:为编录项添加支持信息教程步骤 4:使用内核调试器调试模拟器上的 OS教程步骤 4:设置到 CEPC 的连接并下载运行库映像教程步骤 5:为模拟器本地化运行库映像教程步骤 5:使用内核调试器调试 CEPC 上的 OS教程步骤 5:向编录中添加编录项教程步骤 6:为 CEPC 本地化运行库映像教程步骤 6:为模拟器创建和生成应用程序教程步骤 6:创建 OS 设计教程步骤 7:为 CEPC 创建和生成应用程序教程步骤 7:向 OS 设计中添加编录项教程步骤 7:在自定义运行库映像上的模拟器中运行应用程序教程步骤 8:为 eMbedded Visual C++ 创建 SDK教程步骤 8:在 CEPC 上运行应用程序教程步骤 8:生成 OS 设计教程步骤 9:创建 SDK教程:为 CEPC 生成运行库映像教程:为模拟器生成运行库映像教程:创建编录项并将其添加到 OS 设计中数据传送的战略方法数据关系和关联数据访问安全性数据访问应用程序块数据访问技术路线图数据访问:使用 的最佳实践( 技术文档)数据读取器揭密方便地访问企业日志和规范应用程序块是使用 Web 服务还是使用 .NET Remotin...显示驱动程序开发概念智能客户端 Offline Application Block智能客户端体系结构与设计指南智能设备扩展、SQL Server CE 和我更新列表中的多个项目替换 Windows Vista 及其以后版本中的 DHTML 编辑控... 有关在 Web 应用程序和浏览器内支持 InfoCard v1.0 的... 有关在代码中查找安全性缺陷的专家提示服务服务取向的面向业务的基础服务设计的原则:服务模式与反模式构建 Office 业务应用程序构建 Windows Media Player 和 Windows M...构建具有丰富功能的交互式 Kiosk构建安全 应用程序的简介构建安全的 ASP 页和控件构建安全的 Web 服务构建安全的数据访问构建安全的服务组件构建安全的程序集构建安全的远程组件构建将运行在 Microsoft Pocket PC 和 Window...构建服务器资源的体系结构,激发智能客户端的潜能构建桌面新闻聚合器构建联机 Web 部件库查找并消除大的内存占用核对表:体系结构与设计检查核对表:保护 的安全核对表:保护 Web 服务器的安全核对表:保护 Web 服务的安全核对表:保护企业服务的安全核对表:保护数据访问的安全核对表:保护网络的安全核对表:保护远程处理的安全核对表:托管代码检查代码是否存在整数操作安全漏洞检查托管代码检测 Tablet PC 应用程序中的屏幕方向和屏幕旋转模型-视图-控制器模板示例:Web 应用程序威胁模型模板:Web 应用程序威胁模型死亡、缴税和关系数据库,第 1 部分流接口驱动程序体系结构测定事务引擎设计的基准测试软件模式海雀:服务消耗是如何进行消息处理(企业结构)演练:为 Web 应用程序创建威胁模型状态(企业结构)玩转 DVR-MS现在过去多长时间了?理解 SOAP理解 Windows CE .NET 中的文件系统体系结构理解企业平台理解并扩展 2.0 中的站点导航系统理解面向服务的体系结构生成 ContentRotator 服务器控件生成全球可用设备应用程序生成可靠的 Windows XP Embedded 平台生成和部署 XP Embedded 映像用 .NET Framework Profiling API 迅速重写...用 对象增强数据检索代码用 DirectSound 生成电子鼓用 Schematron 改进 XML 文档验证用 Visual 和 Visual Source...用 WebDAV 通过 Web 传递 XML 数据用 Windows CE .NET 实现容错系统用 Windows XP 的两个强有力的工具在您的代码中检测并堵塞 G...用于 Windows XP Embedded 的第三方工具用于显示分层数据的嵌套网格用新的高级加密标准保持数据的安全性用通讯模式进行业务处理分解和服务辨认疑难解答:下载运行库映像疑难解答:加载驱动程序疑难解答:生成驱动程序疑难解答:调试驱动程序目前您需要了解 Visual Studio .NET 2003 的新增...真实世界的 XML:使用 .NET 框架中集成的读取器和写入器很容易操... 移动客户端软件工厂 - 社区技术预览版本移动性和 Tablet PC 产品系列移动计算桌面端第 1 章—简介第 2 章—处理数据第 3 章—建立连接第 4 章—偶尔连接的智能客户端第 5 章—安全性考虑事项第 6 章—使用多线程第 7 章—部署和更新智能客户端应用程序第 8 章—智能客户端应用程序性能。

ADO_NET讲解6

ADO_NET讲解6

知识阅读
属性 说明 执行Open方法连接数据源的字符串 将要打开数据库的名称 包含数据库的位置和文件
Connection对象的属性和方法:
ConnectionString Database DataSource
State 方法
Close CreateCommand Open ChangeDatabase
数据访问应用模型
数据访问的发展史
“瘦客户端”
客户端逻辑 业务逻辑 数据存储
“胖客户端”
XML Web Service
一层 (单机)
两层
三层 n层 Internet
数据访问应用模型 (续)
• 层的概念
• 客户层
• 也被称为表现层,主要是用户界面
• 业务层(中间层)
• 包含业务逻辑的封装以及与数据源交互
的优点 互用性
简介(续)




使用 XML 为数据传输的媒质 易维护性 • 使用 N 层架构分离业务逻辑与其他应用层次,易于增加 其他层次 可编程性 • 对象模型使用强类型数据,使程序更加简练易 懂 高性能 • 使用强类型数据取得高性能 可扩展性 • 鼓励程序员使用 Web 方式,由于数据是保存 在本地缓存中的,不需要解决复杂的并发问题
显示当前Connection对象的状态 说明
关闭数据库连接。 创建并返回一个与该连接关联的SqlCommand对象 打开一个数据库连接 改变当前连接的数据库。需要一个有效的数据库名称
ASP· NET动态网站设计
Connection对象
知识阅读
连接字符串:
“Server=(local);database=northwind;uid=sa;pwd=;”
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用经验集[1]使用经验集作者:介绍本文为应用程序提供实现最佳性能、可伸缩性和功能的解决方案;它介绍了中可用对象的使用,并为优化应用程序的设计提供了一些建议。

本文包括:l .NET框架组件中包含的数据提供者信息l DataSet 与DataReader的比较,这些对象最佳使用说明l 说明怎样使用DataSet、Commands和Connectionsl 与XML集成的信息l 一般的技巧.NET框架组件数据提供程序.NET框架组件中的数据提供程序是应用程序与数据源之间的一座桥梁。

它允许你从数据源返回查询的结果,在数据源上执行命令,把数据集中的改变提交到数据源。

本文包含了怎样选择最适合需求的.NET框架组件数据提供程序。

使用哪种.NET框架组件数据提供程序为了使应用程序获得最佳的性能,需要使用最适合数据源的.NET框架组件数据提供程序。

连接到SQL Server 7.0及以上版本当连接到SQL Server 7.0及以上版本时,为了获得最佳性能应该使用SQL Server .NET 数据提供程序。

SQL Server .NET数据提供程序设计为直接访问SQL Server,没有其它附加的技术层。

下图(图1)说明了访问SQL Server 7.0及以上版本的多种技术之间的差别。

图1.访问SQL Server 7.0及以上版本的连接方法连接到ODBC数据源名字空间中的ODBC .NET数据提供程序的结构与SQL Server和OLE DB的.NET数据提供程序相同。

ODBC .NET数据提供程序使用"ODBC"前缀和标准的ODBC连接字符串。

注意:ODBC .NET数据提供程序包含在.NET框架组件1.1以上版本,包含ODBC .NET数据提供程序的名字空间是System.Data.Odbc。

使用DataReader、DataSet、DataAdapter和DataView提供两个对象用于检索关系型数据并把它存储在内存中,分别是DataSet和DataReader。

DataSet提供内存中关系数据的表现--包括表和次序、约束等表间的关系的完整数据集合。

DataReader提供快速、只向前、只读的来自数据库的数据流。

使用DataSet时,一般使用DataAdapter(也可能是CommandBuilder)与数据源交互,用DataView对DataSet中的数据进行排序和过滤。

DataSet可以被继承来建立强化类型的DataSet,用于暴露表、行、列作为强化类型对象属性。

下面的内容包含什么时候使用DataSet或DataReader,以及怎样优化访问它们所包含的数据,也包括怎样优化DataAdapter和DataView的使用(也包括CommandBuilder)。

DataSet与DataReader的对比在设计应用程序时,决定使用DataSet还是DataReader需要考虑应用程序需要的功能。

使用DataSet是为了实现应用程序的下述功能:l 操作结果中的多个分离的表。

l 操作来自多个源(例如来自多个数据库、XML文件和电子表格的混合数据)的数据。

l 在层之间交换数据或使用XML Web服务。

与DataReader 不同,DataSet能被传递到远程客户端。

l 通过缓冲重复使用相同的行集合以提高性能(例如排序、搜索或过滤数据)。

l 每行执行大量的处理。

在使用DataReader返回的行上进行扩展处理将使连接存在的时间比必要的更长,从而降低效率。

l 使用XML操作(例如XSLT转换和Xpath查询)维护数据。

在应用程序需要以下功能时使用DataReader:l 不需要缓冲数据。

l 正在处理的结果集太大而不能全部放入内存中。

l 需要迅速一次性访问数据,采用只向前的只读的方式。

注意:当填充DataSet的时候,DataAdapter使用DataReader。

因此使用DataAdapter代替DataSet获得的性能是节约了DataSet消耗的内存和组装DataSet所需要的周期。

这种性能的提高大部分是有名无实的,因此你应该根据需要的功能为基础来做设计决定。

使用强类型DataSet的好处使用DataSet的另一个好处是它能被继承用于建立强类型的DataSet。

强类型DataSet的好处包括设计时的检查和强类型DataSet 的Visual Studio .NET语句填充。

当你为DataSet固定了大纲或关系结构时,就能建立强类型DataSet,把行和列作为对象的属性而不是项的集合。

例如,作为暴露顾客表的某一行的列名的代替,你可以暴露Customer对象的 Name属性。

强类型的DataSet衍生自DataSet类,因此不会牺牲DataSet的任何功能,也就是说,强类型的DataSet也可以是远程的,并作为数据绑定控件(例如DataGrid)的数据源提供。

如果不知道大纲,也能通过使用通常的DataSet获得好处,但是丧失了强类型DataSet的附加特性。

在强类型DataSet中处理空值使用强类型DataSet时,你能给DataSet 的XML大纲定义语言(XSD)作注解以确保强类型DataSet正确的处理空(Null)的引用。

空值(nullValue)注释使你能用String.Empty这个特定值代替DBNull、保持了空引用、或者产生一个异常。

选择其中的哪个依赖于应用程序的内容,默认情况下遇到空引用将产生一个异常。

刷新DataSet中的数据如果你希望使用更新后的值从服务器刷新数据集中的值,使用DataAdapter.Fill。

如果主键定义在数据表上,DataAdapter.Fill基于主键匹配新行,并把服务器的数据改成已存在的行。

被刷新行的RowState设置为Unchanged,即使在刷新前它被修改过。

注意如果给数据表定义了主键,DataAdapter.Fill添加新行可能重复主键值。

如果希望用服务器的当前值刷新一个表,并且保持表中行的改变,你必须首选使用DataAdapter.Fill组合它,填充一个新的数据表,接着将该数据表合并(Merge)进一个数据集,并把preserveChanges值设为true。

在DataSet中搜索数据在一个数据集中查询符合特定条件的行时,使用基于索引(index-based)的查看表将提高性能。

给数据表指定主键(PrimaryKey)值时,就建立了一个索引。

当为数据表建立数据视图(DataView)时也建立了索引。

下面是一些使用基于索引查看的技巧:如果查询是在数据表的主键列上进行的,使用DataTable.Rows.Find代替DataTable.Select。

查询非主键列,可以使用数据视图来提高多个数据查询的速度。

当给数据视图添加排序时,将建立搜索时使用的索引。

数据视图暴露了查询下层数据表的Find和FindRows方法。

如果你不是查询表的排序视图,也可以通过为数据表建立数据视图获得基于索引的查看表的好处。

注意如果你执行数据上的多个查询这是唯一的好处。

如果你只执行单个查询,需要建立索引的过程将因为使用索引而降低了性能。

数据视图(DataView)结构当数据视图建立后,并且当Sort、RowFilter或RowStateFilter或者属性被修改时,数据视图为下层数据表中的数据建立索引。

当建立数据视图对象时,使用把Sort、RowFilter和RowStateFilter值作为参数的数据视图构造函数。

结果是建立了一次索引。

建立"空"数据视图,然后设置Sort、RowFilter和RowStateFilter属性将导致至少两次建立索引。

分页给了你从数据源返回什么数据的明显控制,也提供了在数据集中存储了多少数据的控制。

在设计应用程序时可以考虑以下技巧:l 避免使用DataAdapter.Fill,它使用了startRecord和maxRecords值。

使用这种方式填充数据集时,数据集只填充由maxRecords参数指定的记录个数(从参数startRecord指定的记录开始),而不管返回的整个查询。

这导致读取过时的"不想要的"记录,同时使用了不必要的服务器资源来返回补充记录。

l 用于在某个时候只返回一页记录的技术之一是建立一个SQL语句,该语句包含一个WHERE和ORDER BY子句,并有TOP判定。

这种技术依赖于识别每个唯一行的方法。

当导航到下一页的记录时,修改WHERE子句使它包含所有唯一标识比当前页标识大的记录;当导航到前面一页时,修改WHERE子句使它包含所有唯一标识比当前页标识小的记录。

对于两种查询都只返回记录的TOP页的记录。

当导航到前面一页时需要对记录进行降序排列,这将返回查询的末尾页(如果需要可以在显示前对记录进行重新排序)。

l 另一种技术是建立一个SQL语句包含TOP判定和嵌入的SELECT语句。

这种技术不是基于唯一的识别每行的方法。

使用这种技术的第一步是把页面的大小与想得到的页面数量相乘。

接着把该数值传递给SQL查询的TOP判定,并按升序排序。

接着把这个查询嵌入另一个查询,该查询从嵌入的查询结果中选择TOP页面大小,按降序排列。

本质上返回的是嵌入的查询的末尾页面。

例如,为了返回页面大小是10的查询结果的第三页,使用下面的命令:SELECT TOP 10 * FROM(SELECT TOP 30 * FROM Customers ORDER BY Id ASC) AS Table1 ORDER BY Id DESCl 如果数据不是经常改变,能通过本地维护数据集里面的记录缓存来提高性能。

例如,你能在本地数据集中存储10页数据,只在用户导航超出第一页或最后一页时才查询数据源检索新的数据。

使用大纲(Schema)填充数据集当用数据填充数据集时,DataAdapter.Fill方法使用数据集的已存在的大纲并把它与Select命令(SelectCommand)返回的数据进行组合。

如果数据集中没有与被填充的表匹配的表的名字,Fill方法将建立一张表。

默认情况下,Fill只定义列和列的类型。

你能通过设置数据适配器的MissingSchemaAction属性来重载Fill的默认的行为。

例如,要使Fill建立的表包含主键信息、唯一约束、列属性、是否允许空值、列的最大长度、只读列、自动增加列等等,只需要指定DataAdapter.MissingSchemaAction为MissingSchemaAction.AddWithKey。

作为选择,你能在调用DataAdapter.Fill前调用DataAdapter.FillSchema来确保数据集被填充时大纲已经准备好了。

相关文档
最新文档