浅析ADO.NET的相关知识

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

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

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

连接对象:Connection

命令对象:Command

数据读取器对象:DataReader

数据适配器对象:DataAdapter

数据集对象: DataSet

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

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

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

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

代码:          

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

使用了reader的索引器,

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

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

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

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

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

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

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

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

(三)关于connectionstring

以下是常用的几种connectionstring

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

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-11-12 10:06:01

ADO.NET读取数据

2009-11-13 10:10:07

2009-11-03 17:46:50

ADO.NET Sel

2009-12-22 15:20:25

ADO.NET功能

2009-12-21 16:45:41

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-12-18 16:44:57

ADO.NET统计

2009-12-22 09:50:23

ADO.NET学习

2009-12-21 17:35:24

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-22 10:27:01

ADO.NET数据

2009-12-29 14:24:40

使用ADO.NET

2009-12-21 13:59:03

ADO.NET特性
点赞
收藏

51CTO技术栈公众号