现在的位置: 首页 > 综合 > 正文

对于ADO.NET的Connected和Disconnected的初步认识

2012年03月08日 ⁄ 综合 ⁄ 共 2760字 ⁄ 字号 评论关闭

关于ADO.Net的文章在网上有很多,我在这里只是对于我今天所接触的有关Ado.NETConnected Disconnected的知识做一个小结。如果我理解有错,还望大家来更正。



对于ADO.NETConnectedDisconnected的初步认识


Connected (连接模式) 和 Disconnected (非连接模式) ADO.NET提供的二种访问数据库的模式。其中Disconnected模式是ADO.NET新提供的,在ADO中,并没有这一种连接模式。既然能作为一个新的连接模式出现在.NET的大家庭里,当然有其过人之处,我们稍后将会讨论它的优点。

 

Connected 模式

Connected 模式主要是为数据源提供了forward-onlyread-only二种数据访问模式以及执行数据命令的能力。我们以代码来解释它的工作流程:

using System.Data.SqlClient;

…………..


string connStr = “server = myServer; 

                    database 
= myDatabase; 

                    Integrated Security 
= SSPI;”;

string insertQuery = 

                  “INSERT INTO Customers (CustomerID, CompanyName) 

                   Values (‘Nwind’, ‘Northwind Traders’);


SqlConnection conDB 
= new SqlConnection (connStr);

SqlCommand cmd 
= new SqlCommand(insertQuery);

cmd.Connection 
= conDB;


//连接数据库

conDB.Open()

//处理数据

cmd.ExecuteNonQuery();

//关闭数据库

conDB.Close();


从上面的例子可以看出connected模式是指在数据库连接时,进行数据的处理,处理完后,将数据库关闭。而这种模式的好处在于能够很好的进行金融处理。例如数据库含有多个数据表,数据列/行等等。

 

Disconnected 模式

 

Disconnected模式是ADO.NET重点推荐的连接模式。它的核心是使用一个DataSet(数据集)来将数据存储下来,以能够在不连接数据库的情况下对数据进行处理。DataSet简单来说是一个在内存中的完全独立与原始数据的数据库。它是由一组Table()Column()Row()Constraint(约束)和关系(Relation)组成。下面是DataSet的模型图:

 

 

         <<此图转自Microsoft ADO.NET Step by Step, p7>>

 

大概理解了DataSet,同样,我们来用实例理解Disconnected 模式。

using System.Data;

using System.Data.SqlClient;

………….


string connStr = “server = myServer; 

                    database 
= myDatabase; 

                    Integrate Security 
= SSPI;”;


 SqlConnection conDB 
= new SqlConnection(connStr);

SqlDataAdapter adapter 
= new SqlDataAdapter();

adapter.SelectCommand 
= new SqlCommand(

                             “Select 
* From Suppliers”, conDB);


//连接数据库

conDB.Open();

//创建DataSet

DataSet ds = new DataSet(“Customers”);

//将数据填入DataSet

adapter.Fill(ds);

//关闭数据库

conDB.Close();


string criteria = “Surname = Gates”;

DataRow[] matchRows 
= ds.Tables[“Customers”].Select(criteria);

Foreach (DataRow row 
in matchRows)

{

string forename = row[“Forename”];

string surname = row[“Surname”];

Console.WriteLine(“Customer “
+forename+” ”+surname);

}


由上面的例子可以看出这个模式与connected 模式的不同之处。它是在将数据存入到DataSet(通过DataAdapter)后,即将连接中断,然后再进行数据处理。我们也可以再将数据库打开,并利用AdapterUpdate方法,进行更新数据库。

 

Disconnected模式大大提高了数据库的处理性能,我们可以在数据库没有连接的情况下浏览数据库,查找信息等数据处理,我们同时也可以决定我们更新数据库的时间。我们不需要担心数据源在哪,数据均以xml的形式存储在内存中,而我们只需要利用一些简单的方法即可以使用这些数据,这种模式给我们提供了很大的可升级性与灵活性。也因此,这个模式被ADO.NET推荐为重点使用的模式。

 

上面就是我对今天学习ADO.NET的一个小的总结,如果出现任何的错误,请大家帮忙指正。非常感谢。

-------------------------------------------------------------

题外问题:

我近日在提问区问了一个有关三层架构的问题,可是好像很少老鸟会去提问区逛,所以我厚厚脸皮,把问题在这里再贴一次,希望有老鸟们能帮帮我。谢谢

问题:

在做一个project的时候,project需要用到三层架构。

我的想法是:

表现层用 ASP.NET,

商业层我用了Web Service,

那么数据层呢?我是直接在Web Service中写,还是说新建一个project,如果新建 project,又应该建哪种project呢?在写数据层的时候,又大概是个什么结构呢?我真是没主意了,因为是自学,所以我想我现在是迷失了方向,希望大家能指导一下我。谢谢了。



原问题地址:http://www.cnblogs.com/rayinuk/archive/2005/02/12/103867.html

抱歉!评论已关闭.