c#中关于数据集dataset和dataadpter的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中关于数据集dataset和dataadpter的问题相关的知识,希望对你有一定的参考价值。

我的问题比较大(可能高手觉得比较菜,小弟刚学希望可以得到大虾们的帮助啊!) 我翻阅了好多材料,不是很明白dataset和dataadpter,问题有几个如下:
1.当程序进行到填充dataadpter.fill(数据集对象,数据集中的表名)时候请问是否数据库已经和内存数据集建立了连接,用dataadpter连接数据库为什么没有了open和close难道是自动的开关?
2.当更新数值返回数据库时候dataadapter.update(数据集对象,数据集的表名)这句话是更新了数据集的表还是更新了数据库中的表?如果是数据库中的表那么怎么确定更新数据库中哪个表??
3.我知道dataadapter有SelectCommand、InsertCommand、DeleteCommand、UpdateCommand属性,这些属性代表了什么?仅仅是sql语句?具体的执行流程是什么呢?
4.sqlcommandbuilder builder = new sqlcommandbuilder(已经创建的dataadapter对象)这里为什么要把()里添加已经创建的dataadapter对象,是为了dataadapter的几个属性吗??

先说这么多了,我说下哦!各位大虾,程序我都能试验过好多次,按照语法一步步操作可以实现,但是我就是不明白这几个语法的含义,包括具体的流程,实在是很费解,希望各位帮帮忙!会追加分数的 谢谢!!
就是去了MSDN还不明白,所以才没有办法 想请教大家呢!希望大家帮忙

回答的你的问题,记得拿分来。
1:怎么会没有OPNE和CLOSE呢?这里你要搞明白ADO。NET的意义,sqlconnestion是不管你是dataadpter还是SQLcommand都要用的,必需要OPEN才做下一步的操作。
2:没有UPDATE的话就是只更新数据集里的数据,有UPDATE的话是即更新数据集又更新数据库里的数据。一个是存放在数据库里一个是存放在内存里,有UPDATE则2个都更新,没有则是更新内存里的数据,你也可以理解为虚拟数据,就不是真实的数据。
3:这些属性代表的是对数据库进行的操作,如果你只对数据集操作用不到这些,就比如我回答的2里面如果你要数据集更新后还要同步更新数据库里的数据那就需要这些数据了。
4:是的!
参考技术A 1.其实这个可以形象的想象下哈,dataadpter相当搬运工,他把从运输工(comm对象)那里的数据放到一个箱子(dataset)中,至于数据库和内存建立联系的问题。在实例化dataadpter的时候应该就已经开始了吧!dataadpter是有open和close的,只是他在和comm打交道时会自动处理。也就是说你在fill方法调用后就开始执行close了。这个步骤在微软写dataadpter类时已经做了,所以不需要程序员再做。当然你写了也不会报错滴
2\3\4...下面的就不好说了。。你试着从微软开发这个语言的角度思考问题,会容易很多哈~还有就是亲自写代码实践。。忽忽~睡觉
参考技术B 这个问题都会围绕着新手,我建议你一个程序多次写,每次运行的时候要设置断点,这样的话,数据流程你就会知道了,有些东西是自可意会不可言传的,你要多写一些与数据库连接的小程序,就会明白了! 参考技术C 去MSDN.. 参考技术D 看书,一个是对象,一个是方法

C#中关于值类型和引用类型的个人理解

值类型,除了最终继承自Object,还继承自ValueType

值类型继承ValueType,ValueType继承Object。(c#中所有的类型都最终继承自Object)

 

创建引用类型时,runtime会为其分配两个空间,一块空间分配在堆上,存储引用类型本身的数据,另一个块空间分配在栈上,存储对堆上数据的引用(实际上存储的堆上的内存地址,也就是指针)。

创建值类型时, runtime会为其分配一个空间,这个空间分配在变量创建的地方,如:

      如果值类型是在方法内部创建,则跟随方法入栈,分配到上存储。

      如果值类型是引用类型的成员变量,则跟随引用类型,存储在上。

 

值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的

 

值类型存取速度快,引用类型存取速度慢。

 

值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用

 

栈的内存分配是自动释放;而堆在.NET中会有GC来释放       

 

值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中

 

如:int是值类型,string是引用类型,引用类型指向的是堆中的位置

以上是关于c#中关于数据集dataset和dataadpter的问题的主要内容,如果未能解决你的问题,请参考以下文章

C#中如何清空DataSet数据集对象表中的数据啊?

聚合 C# 数据集时,如何将 DataSet 转换为 .Load() 的 DataTable 数组?

求将dataset数据集导出到excel文件的方法(vs2005 c#)

asp.net C# 中关于 var 类型的疑问?

C# - 数据集(/插入/更新多个表)

C# DataSet与DataTable的区别和用法