ADO.NET—两种连接模式

  • 一、ADO.NET简介

             ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。用来访问数据库,.NET环境下首选的数据库访问接口。ADO.NET对象在应用程序和数据库间扮演者“桥梁”角色.


               图1:整个应用程序的运行机制

    二、两种连接方式简介

            访问数据库ADO.NET提供了两种模式:连接模式和非连接模式。


    1、连接模式:利用DataReader对象实现数据库连接模式

     

     (1)使用Connection对象连接数据库。

    (2)使用Command(命令)对象向数据库索取数据。

    (3)把取回来的数据放在DataReader(数据阅读器)对象中进行读取。

    (4)完成读取操作后,关闭DataReader对象.

    (5)关闭Connection对象。

    提示:ADO.NET的连接模式只能返回向前的、只读的数据,这是因为DataReader对象的特性决定的。

        public partial class DataRead : System.Web.UI.Page  
    
            {  
                protected void Page_Load(object sender, EventArgs e)  
                {  
                    string str = "server=localhost;uid=sa;pwd=123456;database=DataTest";  
                    SqlConnection conn = new SqlConnection(str);  
    
                    SqlCommand cmd = new SqlCommand("select * from student", conn);  
    
                    conn.Open();  
    
                    SqlDataReader rdr = cmd.ExecuteReader();  
    
                    DataTable table = new Datable();  
                    table.Load(rdr);  
                    rdr.Close();  
                    conn.Close();  
                }  
    
            }   

    2、非连接模式:利用DataAdapter对象实现数据库断开模式


    (1)使用Connection对象连接数据库。

    (2)使用Command对象获取数据库的数据。

    (3)把Command对象的运行结果存储在DataAdapter(数据适配器)对象中。

    (4)把DataAdapter对象中的数据填充到DataSet(数据集)对象中。

    (5)关闭Connection对象。

    (6)在客户机本地内存保存的DataSet(数据集)对象中执行数据的各种操作。

    (7)操作完毕后,启动Connection对象连接数据库。

    (8)利用DataAdapter对象更新数据库。

    (9)关闭Connection对象。

        public partial class DataRead : System.Web.UI.Page  
    
            {  
    
                protected void Page_Load(object sender, EventArgs e)  
    
                {  
                    string str = "server=localhost;uid=sa;pwd=123456;database=DataTest";  
                    SqlConnection conn = new SqlConnection(str);  
                    string sql = "select * from student";  
    
                    SqlDataAdapter adp = new SqlDataAdapter(sql, conn);//Adepter对象  
    
                    DataSet ds = new DataSet();//DataSet对象  
                    adp.Fill(ds, "stu");//填充DataSet 并为当前表命名  
    
                    DataTableReader rdr = ds.CreateDataReader();  
    
                    while (rdr.Read())//读取表中数据  
                    {  
                        Response .Write("第n条数据");  
                    }  
                }  
            }

    三、两种连接方式优缺点

    1、连接环境

    优点:

    环境易于实施安全控制

    同步问题易于控制

    数据实时性优于其他环境

    缺点

    必须保持持续的网络连接

    扩展性差

    2、非连接环境

            中央数据存储的一部分数据可以被独立地复制与更改,在需要时可以与数据源中的数据合并

    优点

    可以在任何需要的时间进行操作,在必要时才连接到数据源

    不独占连接

    非连接环境的应用提高了应用的扩展性与性能

    缺点

    数据不是实时的

    必须解决数据的并发性与同步问题

             对于C/S结构,连接模式还是一个不错的模式,在B/S结构,或者分布式的环境中,还是使用断开模式比较好。一方面是扩展性比较好,另外一个方面是效率会比较高,相对于采用连接模式来说。这取决于Connection是否还是需要象在传统的C/S结构中使用单件模式创建一个共享的Connection,还是象在每一个页面都创建自己的Connection.

    四、区别            

            SqlDataReader从字面上看数据读取,在读取数据的过程中一直与数据库保持连接,适合数据量小的情况,执行效率还是可以的。

            SqlDataAdapter(数据适配器)可以说建立一个"本地数据库"--DataSet,先将数据取出来放到dataset中,然后就可以关闭数据库了,通过sqldataadapter还可以更新删除数据库中的东西,可以通过封装的Update等方法同步到数据库,这样服务器的资源消耗就少,可以同时支持更多并发的客户机。当然,这需要DataSet对象的支持和配合才能完成,这是ADO.NET的卓越之处。

            两种模式都可以搭配DataSet和DataTable使用。

    五、适用范围

    1、连接

            数据量小,系统规模不大、客户机和服务器在同一网络内的环境,只读的情况下优先选DataReader

    2、非连接

            适合网络数据量大、系统节点多、网络结构复杂,尤其是通过Internet/Intranet进行连接的网络。需要绑定数据远的情况下,需要修改数据同时更新到数据库(非连接) 

     注:没有那种模式是绝对的,根据自己的需要情况,各取所需,这样节省资源,提高效率,达到事半功倍的效果。

                           

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值