• 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) + " " + rdr.GetValue(i) + " ");
                    }
                    Console.WriteLine();
                }
            }

  • 相关阅读:
    RCP二级菜单的实现
    volatile 的作用
    C6678 核间通信(IPC)
    大小端模式详解
    SPI 极性与相位对采样的影响
    DSP c6678的启动方式
    DSP CCS初学
    volatile的作用
    JTree/DefaultMutableTreeNode 树形结构
    java.awt.Graphics2D绘制流程图基本元素
  • 原文地址:https://www.cnblogs.com/xixim/p/4617955.html
Copyright © 2020-2023  润新知