SqlDataReader 和SqlDataAdapter 区别

SqlDataReader和SqlDataAdapter 区别
一,SqlDataReader //基于连接,只读访问 适合数据量较小。
      SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库。要求资源也大一点
二,SqlDataAdapter 读取数据后将数据集放入DataSet ,DataSet 的数据存在本地客服机内存。
三,SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到。
     SqlDataAdapter返回的是数据集或者表,可以对其中的数据作任意操作
四,写法上不同:
     SqlDatReader执行前须先打开数据库,然后须生成一个COMMAND对象。再由COMMAND.EXECUTEREADER()方法赋值。完成后须手动关闭联接。
     SqlCommand cmd = new SqlCommand("select * from stu", conn);
            conn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            。。。。。
            conn.close();
       SqlDataAdapter 执行时,自动打开数据库,且不用Command的ExecuteReader方法进行赋值,完成后自动断开联接。
            SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            adptr.Fill(ds, "stu");
实例:
1,运用SqlDataReader 读取数据
class DataReader
    {
        static void Main()
        {
            string str = "server=localhost;uid=sa;pwd=123;database=northwind";
            SqlConnection conn = new SqlConnection(str);
            SqlCommand cmd = new SqlCommand("select * from stu", conn);
            conn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
             DataTable table=new Datable();
            table.Load(rdr);
             rdr.Close();
            conn.Close();
        }
2,运用SqlDataAdapter +DataSet 读取修改数据
    class SqlDataAdapter
    {
        static void Main()
        {
            string str = "server=localhost;uid=sa;pwd=123;database=northwind";
            SqlConnection conn = new SqlConnection(str);
            string sql = "select * from stu";
            SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);//Adepter对象
            DataSet ds = new DataSet();//DataSet对象
            adptr.Fill(ds, "stu");//填充DataSet 并为当前表命名
            DataTableReader rdr = ds.CreateDataReader();
            while (rdr.Read())//读取表中数据
            {
                for (int i = 0; i < rdr.FieldCount; i++)
                {
                    Console.Write(rdr.GetName(i) + "\t" + rdr.GetValue(i) + "\t");
                }
                Console.WriteLine();
            }
        }

时间: 2024-10-05 20:36:10

SqlDataReader 和SqlDataAdapter 区别的相关文章

SqlDataReader、SqlDataAdapter與SqlCommand的 区别

1.SqlDataReader,在线应用,需要conn.open(),使用完之后要关闭. SqlConnection conn = new SqlConnection(connStr); //conn.Open();SqlCommand cmd = new SqlCommand("select top 10 * from tuser", conn);SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnect

C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?

对于C#初学者来说,我们通常遇到ExecuteReader.ExecuteNonQuery.ExecuteScalar.SqlDataReader.SqlDataAdapter这些对象或者方法的时候就开始犯晕,不知道哪个对象适合用增删改,哪个对象适合查询的时候用,本人通过 网上搜索和个人的一些理解,整理了一下,有错误的地方希望大家能给出指正. 一.//数据库连接字符串    private readonly static string connectionString =      Config

SqlDataReader和SqlDataAdapter的区别

SqlDataReader 高效,功能弱,只读访问SqlDataAdapter 强大,要求资源也大一点 SqlDataReader 只能在保持跟数据库连接的状态下才可以读取... SqlDataAdapter 大多情况下是一次性读取一个表,然后填充到DataSet中,然后就可以断开跟数据库的连接了. 两者区别主要是   在线 和 离线 的区别..... 一:SqlDataReader rd;rd=cmd.ExecuteReader(); 比较高效,如果只是显示数据,当然要用这个 二:SqlDat

C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter的区别

ExecuteNonQuery()执行命令对象的SQL语句,返回一个int 类型的变量,返回数据库操作之后影响的行数.适合用来验证对数据库进行增删改的情况. 2.ExecuteScalar()也可以执行sql语句.如果SQL语句是Select查询,则仅仅返回查询结果集中第一行第一列,而忽略其他行和列.如果SQL语句不是Select查询,则这个返回结果没任何作用.(建议查询数据库时使用) 由于不知道sql语句到底是什么样的结构(有可能是int,有可能是Char等其它,)所以ExecuteScala

SqlDataReader和SqlDataAdapter

SqlDataReader 高效,功能弱,只读访问SqlDataAdapter 强大,要求资源也大一点 SqlDataReader 只能在保持跟数据库连接的状态下才可以读取... SqlDataAdapter 大多情况下是一次性读取一个表,然后填充到DataSet中,然后就可以断开跟数据库的连接了. 两者区别主要是   在线 和 离线 的区别..... 一:SqlDataReader rd;rd=cmd.ExecuteReader(); 比较高效,如果只是显示数据,当然要用这个 二:SqlDat

使用SqlDataReader和SqlDataAdapter的注意

1.当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它. 2.一个连接只能被一个SqlDataReader使用,这也是为什么要尽早关闭SqlDataReader的原因. 3.使用完SqlDataReader后,你可以在程序中显示的调用数据库连接对象的Close方法关闭连接,也可以在调用Command对象的 ExecuteReader方法时传递CommandBeha

关于SqlDataReader使用的一点疑惑

C#中的SqlDataReader类(System.Data.SqlClient)是用来在保持打开数据库连接的状态下取数据用的 用法如下图: "保持与数据库的连接"这个特性也是SqlDataReader与SqlDataAdapter的最大区别, 思考: 既然SqlDataReader在读取数据的时候是保持对数据库的连接, 那么,如果在ExecuteReader():方法执行之后,在reader.Read()进行逐行取值的过程中, 我们改变数据库某一行的值,那么此时这个reader走到这

关于增删改查的几个对象及方法

近日和小伙伴们在进行机房合作,我负责的是D层.在重新写sqlhelper时,发现查询操作用到的是SqlDataAdapter对象,我记得还有个SqlDataReader对象也是执行对数据库的查询操作.还有增删改方法除了ExecuteNonQuery()还有没有其他方法,返回值integer和boolean有什么不同.个人重构时没好好研究,现在好好总结一下,欢迎各位斧正. 一.增删改的方法 我们在对数据库进行增删改操作时一般使用sqlcommand命令对象,这个对象的方法有三个.非别是Execut

General框架如何实现多数据库支持

关于用C#实现多数据库支持的方式,大家都会多少了解,本文从General框架的开发思路角度详细介绍General框架实现多数据库支持的方式,使更多的人了解General框架的底层实现并得到所需的相关知识.我在开发General框架之中,从网络中获取到了很多知识,对其他ORM框架亦有借鉴,其中借鉴最多的是NBear框架和NHibernate框架,我将从各处得到的开发思想融合进来,形成了我自己的开发方式. 简单说来,General框架支持多数据库的实现思路,无非是以下几点: 1.Ado.Net的多数