zoukankan      html  css  js  c++  java
  • .net 面试题总结

    1. DataSet和DataReader的区别?

    DataReader:和数据库处于一直连接状态。只读只能向前读取,一次只能读取一行信息。DataReader每次只在内存中加载一条数据,内存占用少,高效率! 

    Dateset:和数据库是断开的离线状态。返回都是数据集,可以对其中的数据做任意操作,DataSet将数据全部加载在内存中,内存占用多,效率稍低。

    - DataReader是数据管理提供者类,而DataSet是一般性数据类。

    DataSet获取数据需要通过桥梁DataAdapter的填充,由于DataReader本身就是管理提供者,它可以通过Command的ExecuteReader()方法就可以获取数据。

    - DataReader是在线处理,当连接关闭后就不能读取数据;DataSet可以离线处理数据,它是把数据从数据库拷贝到本地存储,在关闭连接的情况下仍然可以在DataSet中处理数据,甚至可以在本地存储的表格中增加限制。

    - DataReader只能正向读取数据,但不能修改数据;DataSet可以按任何顺序读行,可以按灵活的方式搜索、排序和过滤这些行,甚至可以改变这些行,然后将这些改变同步到数据库中。

    - 从DataReader读取数据的速度快于DataSet。

    - 由于DataSet是离线处理,所以当在事务处理中要锁定数据库是,不可以使用DataSet。因为当DataSet被填充以后,会自动断开与数据库的连接,此时不可能再对数据库进行锁定。

    选择使用DataReader的情形: 

    1)不需要缓存数据。 

    2)要处理的结果集太大,内存中放不下。 

    3)一旦需要以仅向前、只读方式快速访问数据。

    2. 委托和事件的区别?

                                                                                   表1 委托和事件的区别

    序号 区别 委托 事件
    1 是否可以使用=来赋值
    2 是否可以在类外部进行调用
    3 是否是一个类型 否,事件修饰的是一个对象

    在.net中,事件是一种特殊的委托。

    - 事件只能在本类型内部“触发”,委托不管在本类型内部还是外部都可以“调用”。

    - 在类的外部,事件只能用“+=”和“-=”去订阅/取消订阅,如果是委托的话还可以使用“=”。

  • 相关阅读:
    双向链表的创建,查找,删除
    atoi 函数自实现
    strcmp,strcpy,strcat,strncmp,strncpy,strncat,自实现精炼版本
    天生棋局(堆上申请二维空间的应用)
    使用二级指针,初始化一级指针
    指针数组的简单理解
    输入二进制数,输出10进制数
    阶乘循环联系题
    [剑指offer] 二叉搜索树的第k个节点
    二叉树的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/anny-1980/p/4485048.html
Copyright © 2011-2022 走看看