浅析ADO.NET的相关知识

开发 后端
ADO.NET是.NET对DataBase操作的相关类的集合。ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。

ADO.NET在处理数据时,可分为连接式与断开式

ADO.NET涉及到的主要对象:

连接对象:Connection

命令对象:Command

数据读取器对象:DataReader

数据适配器对象:DataAdapter

数据集对象: DataSet

下面是一个简单的ADO.NET连接式访问数据库的代码

  1. private static void ReadOrderData(string connectionString)  
  2. {  
  3.     string queryString =  
  4.         "SELECT OrderID, CustomerID FROM dbo.Orders;";  
  5. //此处使用using来自动释放connection  
  6.     using (SqlConnection connection =  
  7.                new SqlConnection(connectionString))  
  8.     {  
  9.         SqlCommand command =  
  10.             new SqlCommand(queryString, connection);  
  11.         connection.Open();  
  12.  
  13.         SqlDataReader reader = command.ExecuteReader();  
  14.  
  15.         // SqlDataReader 的默认位置在***条记录前面。因此,必须调用 Read 来开始访问任何数据  
  16.         while (reader.Read())  
  17.         {  
  18.             Console.WriteLine(String.Format("{0}, {1}",  
  19.                 reader[0], reader[1]));  
  20.         }  
  21.  
  22.         // 关闭reader  
  23.         reader.Close();  
  24. //对于SqlConnection的MARS模式关闭的情况下,一次只能打开一个 SqlDataReader,在***个关闭之前,打开另一个的任何尝试都将失败。另外,在reader不关闭之前,相同的command.ExecuteReader();将会失败(无论是否为MARS)  
  25.     }  

接下来对上面这段代码做一些说明:

代码:          

  1. Console.WriteLine(String.Format("{0}, {1}",  
  2.                reader[0], reader[1]));  

使用了reader的索引器,

索引器调用所的方法如下:

  1. override public object this[int i] {  
  2.             get {  
  3.                 return GetValue(i);  
  4.             }  
  5.         }  
  6.    
  7.         override public object this[string name] {  
  8.             get {  
  9.                 return GetValue(GetOrdinal(name));  
  10.             }  
  11.         } 

 (二)关于command的一些方法的说明

ExecuteNonQuery 对连接执行 Transact-SQL 语句并返回受影响的行数。 (重写 DbCommand..::.ExecuteNonQuery()()()。)

ExecuteReader 已重载。 将 CommandText 发送到 Connection 并生成一个 SqlDataReader。 

ExecuteScalar 执行查询,并返回查询所返回的结果集中***行的***列。忽略其他列或行。 (重写

DbCommand..::.ExecuteScalar()()()。)

ExecuteXmlReader 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。 

(三)关于connectionstring

以下是常用的几种connectionstring

  1. //基本  
  2. string baseconnstr="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword";  
  3.  
  4.  
  5. //MARS  
  6. string marsconnstr="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;" 
  7.                     +"MultipleActiveResultSets=true"  
  8.  
  9.  
  10. //在app_data文件夹中的sqlexpress.mdf  
  11.  
  12. string mdfDataDir="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;" 
  13.  
  14.  
  15. //使用SQL集群故障转移  
  16. string mirrorconnstr="Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;" 
  17.  
  18. //异步  
  19. string asynconnstr="Server=myServerAddress;Database=myDataBase;Integrated Security=True;Asynchronous Processing=True;" 

MARS中,其实ADO.NET是对未关闭的sqlcommand挂起.所以datareader只能使用其各自的command实例.

【编辑推荐】

  1. ADO.NET中的多数据表操作读取
  2. 浅谈ADO.NET中的五个主要对象
  3. 使用LINQ和ADO.NET创建Silverlight程序
  4. ADO.NET数据库连接、操作SQL举例
  5. ADO.NET中容易混淆的概念
责任编辑:彭凡 来源: cnblogs
相关推荐

2009-09-14 13:37:25

LINQ ADO.NE

2009-11-04 09:18:12

ADO.NET _Re

2009-12-21 16:45:41

ADO.NET程序

2009-12-22 15:20:25

ADO.NET功能

2009-12-23 11:25:30

ADO.NET处理

2009-12-24 09:26:01

ADO.Net Tea

2009-11-04 10:48:02

ADO.NET Dat

2009-11-12 10:06:01

ADO.NET读取数据

2009-11-13 10:10:07

2009-11-03 17:46:50

ADO.NET Sel

2009-12-18 16:44:57

ADO.NET统计

2009-12-21 17:35:24

ADO.NET对象

2009-12-22 09:50:23

ADO.NET学习

2009-12-25 10:25:59

2009-12-21 15:58:19

ADO.NET集合

2009-12-30 10:32:04

扩展ADO.NET

2009-12-28 15:46:22

ADO.NET操作

2009-12-29 14:24:40

使用ADO.NET

2009-12-21 13:59:03

ADO.NET特性

2009-12-22 10:27:01

ADO.NET数据
点赞
收藏

51CTO技术栈公众号