SqlDataReader 高效,功能弱,只读访问
SqlDataAdapter 强大,要求资源也大一点

SqlDataReader 只能在保持跟数据库连接的状态下才可以读取。。。

SqlDataAdapter 大多情况下是一次性读取一个表,然后填充到DataSet中,然后就可以断开跟数据库的连接了。

因为DataSet是离线的,所以SqlDataAdapter这个对象是连接DataSet和数据库的桥梁,所有对DataSet的操作(填充,更新等)都要通过他   
    
  ado.net数据访问有两种方式:   
    
  1.离线--通过DataSet,然后离线增,删,改,最后通过SqlDataAdapter解   析到数据库中   
    
  2.直接对数据库操作SqlCommand   (Update,Insert,Delete)

SqlCommand就是是命令了,可以用它来执行SQL命令   
  SqlDataAdapter就是数据适配器了,它是用于在数据源和数据集之间通讯的一组对象
SqlCommand对应DateReader   
  SqlDataAdapter对应DataSet

一、DataCommand

 1 string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
2 SqlConnection sqlconn = new SqlConnection(sqlconnstr);
3 //建立Command对象
4 SqlCommand sqlcommand = new SqlCommand();
5 //Command对象的属性赋值
6 sqlcommand.Connection = sqlconn;
7 sqlcommand.CommandText = "delete from Employees where ID=@ID";
8 sqlcommand.Parameters.AddWithValue("@ID", TextBox1.Text);
9 //打开数据库连接
10 sqlconn.Open();
11
12 //执行数据库操作
13 intDeleteCount = sqlcommand.ExecuteNonQuery();
14
15 删除对象、关闭连接
16
17 sqlcommand = null;
18 sqlconn.Close();
19 sqlconn = null;
 1 SqlCommand myconn = new SqlCommand("select * from v_economy2_comidd where eid=" + Request.QueryString["eid"] + "", conn);
2
3 conn.Open();
4
5 SqlDataReader rd = myconn.ExecuteReader();
6
7 rd.Read();
8
9 Lbyear1.Text = rd["year1"].ToString();
10
11 Lbmonth1.Text = rd["month1"].ToString();
12
13 Lbcom_name.Text = rd["com_name"].ToString();
14
15 rd.Close();
16
17 conn.Close();

二、DataAdapter

 1  string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; ;
2 SqlConnection sqlconn = new SqlConnection(sqlconnstr);
3 DataSet ds = new DataSet();
4 sqlconn.Open();
5 SqlDataAdapter sqld = new SqlDataAdapter("select * from student", sqlconn);
6 sqld.Fill(ds, "tabstudent");
7
8 GridView1.DataSource = ds.Tables["tabstudent"].DefaultView;
9 GridView1.DataBind();
10 sqlconn.Close();
11 sqlconn = null;
 1        string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
2 SqlConnection sqlconn = new SqlConnection(sqlconnstr);
3 //建立DataSet对象
4 DataSet ds = new DataSet();
5 //建立DataTable对象
6 DataTable dtable;
7 //建立DataRowCollection对象
8 DataRowCollection coldrow;
9 //建立DataRow对象
10 DataRow drow;
11 //打开连接
12 sqlconn.Open();
13 //建立DataAdapter对象
14 SqlDataAdapter sqld = new SqlDataAdapter("select * from Employees", sqlconn);
15 //用Fill方法返回的数据,填充DataSet,数据表取名为“tabstudent”
16 sqld.Fill(ds, "Employees");
17 //将数据表tabstudent的数据复制到DataTable对象
18 dtable = ds.Tables["Employees"];
19 //用DataRowCollection对象获取这个数据表的所有数据行
20 coldrow = dtable.Rows;
21 //逐行遍历,取出各行的数据
22 for (int inti = 0; inti < coldrow.Count; inti++)
23 {
24 drow = coldrow[inti];
25 Label1.Text += " 编号:" + drow[0];
26 Label1.Text += " 姓名:" + drow[1];
27 Label1.Text += " 性别:" + drow[2];
28 Label1.Text += " 年龄:" + drow[3];
29 Label1.Text += " 工作日期:" + drow[4] + "<br />";
30 }
31 //执行更新
32 sqld.Update(dtable.GetChanges());
33 //使DataTable保存更新
34 DataTable.AcceptChanges();
35 sqlconn.Close();
36 sqlconn = null;
37

DataCommand和DataAdapter的更多相关文章

  1. .Net中DataAdapter批量插入和更新数据总结

    前言 前段时间一直在忙着项目上线,在做项目的同时遇到了一些之前不曾碰到的问题,因为没有经验,只能从网上找一些相关的解决方案,但是网上提供的资料实在是太杂,有的根本不能用,耗时又耗力. 我希望把我这段时 ...

  2. Ado.net 三[SQL注入,DataAdapter,sqlParameter,DataSet]

    1.SQL注入:SQL注入攻击是web应用程序的一种安全漏洞,可以将不安全的数据提交给运用程序,使应用程序在服务器上执行不安全的sql命令.使用该攻击可以轻松的登录运用程序. 例如:该管理员账号密码为 ...

  3. C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例

    DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...

  4. C#与数据库访问技术总结(十四)之DataAdapter对象

    DataAdapter对象 DataAdapter对象主要用来承接Connection和DataSet对象. DataSet对象只关心访问操作数据,而不关心自身包含的数据信息来自哪个Connectio ...

  5. ADO.NET中的DataSet和DataAdapter

    DataSet和DataTable DataSet是一个数据集合,存储在内存中,算是一个临时的数据库. 个人觉得,不是太常用了,DataTable或者直接用List<model>存数据比这 ...

  6. dataAdapter与dataSet和dataTable的填充

    对于dataAdapter与dataSet和dataTable的填充,可以分为1对1,1对n,n对n,3种情况. 以SqlDataAdapter为例. //(1)1对1 SqlDataAdapter ...

  7. ADO.NET笔记——使用DataAdapter执行增删改操作

    相关知识: DataSet中的数据一旦从数据库下载下来,便不再与数据库保持联系.如果修改了DataSet中的数据,需要重新建立连接,并且通过SQL命令将修改更新到数据库去 编写SQL命令往往比较繁琐和 ...

  8. DataSet与DataAdapter的关系

    DataSet 作用:DataSet,DataAdapter读取数据. 问:什么是DataAdapter?答:DataAdapter对象在DataSet与数据之间起桥梁作用 string strCon ...

  9. asp.net学习之ado.net(无连接模式中的DataAdapter)

    原文:asp.net学习之ado.net(无连接模式中的DataAdapter) 在非连接模式下,主要讨论以下对象:DataAdapter.     DataAdpater的作用是在物理存储模式的数据 ...

随机推荐

  1. 当我们用自定义的类对象作为key时,我们必须在程序中覆盖HashCode()和equals()。

    Key值既然可以作为对象,那么也可以用一个自定义的类.比如: m.put(new sutdent(“Liucy”,30),”boss”) 如果没有语句来判定Student类对象是否相同,则会全部打印出 ...

  2. 关于ping地址的几个意义

    1.ping 127.0.0.1 判断电脑的tcp/ip协议栈有没有问题 2.ping 本机ip 判断电脑的网卡驱动有没有问题 3.ping 网关 判断数据是否可以到达路由 4.ping www.ba ...

  3. JIRA应用的内存参数设置不当+容器没有对资源进行限制导致服务挂掉的例子

    背景: 应用的部署结构是这样的:使用rancher管理的Docker集群,有三台物理主机,二十多个Docker容器, 提供的功能是问题跟踪(JIRA),文档管理(Confluence),代码托管(sv ...

  4. C# IO流的操作(二)

    文件在操作系统中是以二进制(01)的形式保存到磁盘上的,在C#程序当中,我们可以通过读取流将文件读取到byte[]当中(读到内存中),也可以通过写入流将byte[]写入文件(保存到磁盘上).下面将演示 ...

  5. C#队列Queue实现一个简单的电商网站秒杀程序

    电商的秒杀和抢购,对程序员来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要. 我们 ...

  6. Solve Docker for Windows error: docker detected, A firewall is blocking file Sharing between Windows and the containers

    被这个“分享硬盘”问题烦了我好几个小时,终于在一个叫Marco Mansi外国人博客上找到解决方法了,真的很无奈 https://blog.olandese.nl/2017/05/03/solve-d ...

  7. P1115 最大子段和

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一个正整数NNN,表示了序列的长度. 第二行包含NNN个绝对值不大于100001000010000的 ...

  8. 二、JavaScript基础(2)

    BOM基础加强 1.浏览器对象BOM DOM Window DOM Navigator DOM Screen DOM History DOM Location 2.浏览器对象的使用 History H ...

  9. php 腾讯地图和百度地图的相互转换

    关于百度和腾讯地图坐标转换的问题,网上大多给的是JS实现的,而JS又是异步实现的,无法返回值,在有些应用场景下不好使用,这里我从腾讯论坛上找到了一个PHP转换的方法,贴出来分享给大家.经测试十分有效! ...

  10. ClientImageViewController

    package com.vcredit.ddcash.server.web.controller.common; import com.vcredit.ddcash.server.commons.mo ...