DataCommand和DataAdapter
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的更多相关文章
- .Net中DataAdapter批量插入和更新数据总结
前言 前段时间一直在忙着项目上线,在做项目的同时遇到了一些之前不曾碰到的问题,因为没有经验,只能从网上找一些相关的解决方案,但是网上提供的资料实在是太杂,有的根本不能用,耗时又耗力. 我希望把我这段时 ...
- Ado.net 三[SQL注入,DataAdapter,sqlParameter,DataSet]
1.SQL注入:SQL注入攻击是web应用程序的一种安全漏洞,可以将不安全的数据提交给运用程序,使应用程序在服务器上执行不安全的sql命令.使用该攻击可以轻松的登录运用程序. 例如:该管理员账号密码为 ...
- C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例
DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...
- C#与数据库访问技术总结(十四)之DataAdapter对象
DataAdapter对象 DataAdapter对象主要用来承接Connection和DataSet对象. DataSet对象只关心访问操作数据,而不关心自身包含的数据信息来自哪个Connectio ...
- ADO.NET中的DataSet和DataAdapter
DataSet和DataTable DataSet是一个数据集合,存储在内存中,算是一个临时的数据库. 个人觉得,不是太常用了,DataTable或者直接用List<model>存数据比这 ...
- dataAdapter与dataSet和dataTable的填充
对于dataAdapter与dataSet和dataTable的填充,可以分为1对1,1对n,n对n,3种情况. 以SqlDataAdapter为例. //(1)1对1 SqlDataAdapter ...
- ADO.NET笔记——使用DataAdapter执行增删改操作
相关知识: DataSet中的数据一旦从数据库下载下来,便不再与数据库保持联系.如果修改了DataSet中的数据,需要重新建立连接,并且通过SQL命令将修改更新到数据库去 编写SQL命令往往比较繁琐和 ...
- DataSet与DataAdapter的关系
DataSet 作用:DataSet,DataAdapter读取数据. 问:什么是DataAdapter?答:DataAdapter对象在DataSet与数据之间起桥梁作用 string strCon ...
- asp.net学习之ado.net(无连接模式中的DataAdapter)
原文:asp.net学习之ado.net(无连接模式中的DataAdapter) 在非连接模式下,主要讨论以下对象:DataAdapter. DataAdpater的作用是在物理存储模式的数据 ...
随机推荐
- 并发编程基础之ThreadLocal
一:概念 在多线程并发访问的情况下,为了解决线程安全,一般我们会使用synchronized关键字,如果并发访问量不是很大,可以使用synchronized, 但是如果数据量比较大,我们可以考虑使用T ...
- 【2019年04月03日】A股最便宜的股票
太钢不锈(SZ000825) - 当前便宜指数:161.66 - 滚动扣非市盈率PE:4.62 - 滚动市净率PB:1.03 - 动态年化股息收益率:4.53% - 太钢不锈(SZ000825)的历史 ...
- 如何用AJax提交name[]数组?
https://www.cnblogs.com/junzilan/p/5424120.html
- LeetCode - 703. Kth Largest Element in a Stream
Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...
- gitlab服务器IP调整后修改domian或ip
背景 本地搭建的gitlab 服务器,在 /etc/gitlab/gitlab.rb 中 external_url 通常是局域网ip的形式.如下所示 external_url 'http://192. ...
- STM32进入HardFault_Handler处理办法
STM32进入HardFault_Handler处理办法 HardFault_Handler出现的情况一般有两种: 一种是:数组越界 一种是:堆栈溢出,程序指针指飞 方法一 在中断HardFault_ ...
- 管理菜单 结贴回复 来自 202.112.36.253 的回复: TTL 传输中过期
发表于 2010-08-26 18:29:14 楼主 其实标题是我执行如下命令时的输出:C:\Users\ChenWeiguang>ping 218.198.81.190 正在 Ping 218 ...
- nw.js---创建一个点击菜单
使用nw.js创建一个可点击的菜单: <!doctype html> <html lang="en"> <head> <meta char ...
- unable to create ...erroractionpreference....
Docker on windows 10 can't startup after deleting MobyLinuxVM in Hyper-V manually 重新启动hyper-v就可以解决了
- iframe 加载外部资源,显示隐藏loading,onload失效
在项目中使用iframe 来加载外部资源,需要在iframe请求外部资源的时候,需要显示一个loading,在加载完成后,将这个loading隐藏掉,刚开始看到W3C中 iframe有一个 onloa ...