ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。
ado.net可让开发人员以一致的方式存取资料来源(例如 与 ),以及透过 和 所公开的资料来源。资料共用的消费者应用程序可使用ado.net 来连接至这些资料来源,并且撷取、处理及更新其中所含的资料。
ado.net可将资料管理的资料存取分成不连续的元件,这些元件可分开使用,也可串联使用ado.net也包含 资料提供者,以用于连接资料库、执行命令和撷取结果。这些结果会直接处理、放入ado.net DataSet 物件中以便利用机器操作 (Ad Hoc)的方式公开给使用者、与多个来源的资料结合,或在各层之间进行传递。 物件也可以与.NET Framework 资料提供者分开使用,以便管理应用程序本机的资料或来自 XML 的资料。
ado.net类别 (Class) 位于 System.Data.dll 中,而且会与 System.Xml.dll 中的XML 类别整合。
ado.net可为撰写 Managed 程式码的开发人员提供类似于 (ADO)提供给原生元件物件模型 (,COM)开发人员的功能。建议使用ado.net而非ADO来存取.NET 应用程序中的资料。
ADO .NET会提供最直接的方法,让开发人员在 .NET Framework 中进行资料存取。
- 类库:
Connection 类
和数据库交互,必须连接它。连接帮助指明 、数据库名字、用户名、密码,和连接数据库所需要的其它参数。 会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。与数据库交互的过程意味着必须指明想要执行的操作。这是依靠 执行的。开发人员使用Command对象来发送SQL语句给数据库。Command对象使用Connection对象来指出与哪个数据源进行连接。开发人员能够单独使用Command对象来直接执行命令,或者将一个Command对象的引用传递给DataAdapter,它保存了一组能够操作下面描述的一组数据的命令。[3]Command对象
成功与数据建立连接后,就可以用Command对象来执行查询、修改、插入、删除等命令;Command对象常用的方法有ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命令。[3]DataReader类
许多数据操作要求开发人员只是读取一串数据。DataReader对象允许开发人员获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的 。这意味着开发人员只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果开发人员需要操作数据,更好的办法是使用DataSet。[3]DataSet对象
DataSet对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。开发人员甚至能够定义表之间的关系来创建主从关系(parent-child relationships)。DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有Data Providers使用的对象,因此它并不像Data Provider一样需要特别的前缀。[3]DataAdapter类
某些时候开发人员使用的数据主要是只读的,并且开发人员很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。DataAdapter通过断开模型来帮助开发人员方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,DataAdapter 填充(fill)DataSet对象。DataAadapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,DataAdapter包含对数据的SELECT、INSERT、UPDATE和DELETE操作的Command对象引用。开发人员将为DataSet中的每一个Table都定义DataAadapter,它将为开发人员照顾所有与数据库的连接。所以开发人员将做的工作是告诉DataAdapter什么时候装载或者写入到数据库。[3]DataTable类
DataTable 是一个数据网格控件。它可以被应用在 VB 和 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。DataTable的实例化以及添加列:DataTable dt = new DataTable();dt.Columns.Add("ID");dt.Columns.Add("Name");DataRow dr = dt.NewRow();object[] objs = { 1, "Name" };dr.ItemArray = objs;dt.Rows.Add(dr);this.dataGridView1.DataSource = dt;[3]
1:必须掌握的几个方法
open():使用 System.Data.SqlClient.SqlConnection.ConnectionString 所指定的属性设置打开数据库连接
dispose():释放由 System.ComponentModel.Component 使用的所有资源。
close():关闭与数据库的连接。 此方法是关闭任何已打开连接的首选方法
2:必须要掌握的属性
Database:当前数据库的名称或连接打开后要使用的数据库的名称
DataSource: 获取要连接的 SQL Server 实例的名称
ConnectionString:获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
ConnectionString:获取或设置用于打开 SQL Server 数据库的字符串
ConnectionState 描述与数据源的连接的当前状态。
ConnectionState 的属性
/// 摘要:// 连接处于关闭状态。Closed = 0,//// 摘要:// 连接处于打开状态。Open = 1,//// 摘要:// 连接对象正在与数据源连接。Connecting = 2,//// 摘要:// 连接对象正在执行命令。(该值是为此产品的未来版本保留的。)Executing = 4,//// 摘要:// 连接对象正在检索数据。(该值是为此产品的未来版本保留的。)Fetching = 8,//// 摘要:// 与数据源的连接中断。 只有在连接打开之后才可能发生这种情况。 可以关闭处于这种状态的连接,然后重新打开。(该值是为此产品的未来版本保留的。)Broken = 16
ado连接实例
string strSql = "Data Source=.;database=Ttest;User id=sa;pwd=123456"; SqlConnection connection = new SqlConnection(strSql); connection.Open(); //判断数据库是否打开 if (connection.State == ConnectionState.Open) { Console.WriteLine("数据连接信息"); Console.WriteLine("数据库源:{0}",connection.DataSource); Console.WriteLine("数据库名称:{0}",connection.Database); Console.WriteLine("连接数据花费时间:{0}",connection.ConnectionTimeout); } //关闭连接 connection.Close(); //释放所有资源 connection.Dispose(); if (connection.State == ConnectionState.Closed) { Console.WriteLine("数据库已关闭"); }