1、DataView是DataTable的表示,DataTable表里的记录是没有顺序的,但显示可以有不同顺序(DataVIew),
但还是同一张表,所以一个DataTable可以有多个DataView,默认访问DataTable,其实是访问他的
DefaultView。DataSet则是DataTable的集合,也可以有不止一个DataTable
2、DataView 是一张DataTable的虚拟视图 ,主要用来显示数据的 ,其实数据的更改都是发生在DataTable中。
如果以数据库来打比方,DataSet就是一个功能简单的数据库,是多个表(DataTable)的集合,DataTable就是对应数
据库中的表,而DataView则对应数据库中的视图(View)。
//定义一个DataView ,得到一个全部职员的视图
DataView dataView1 = DbHelperSQL.QueryDataView(sql);
//过滤得到一个只显示男职员的视图
dataView1.RowFilter = " sex='男' ";
因为是视图不会改变数据,可以重复使用
_________________________________________________________________________________
由于 Hashtable 和 Dictionary 同时存在, 在使用场景上必然存在选择性, 并不任何时刻都能相互替代.
[1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
[2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
[3] Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.
DataColumn 是用于创建 DataTable 的列
http://blog.sina.com.cn/s/blog_4568633c0100n3po.html
◆FileStream对象
FileStream对象表示在磁盘或网络路径上指向文件的流。当类提供向文件读写字节的方法时,经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。字符数据易于使用,但是有些操作比如随机文件访问,就必须由FileStream对象执行。
FileStream对象的构造函数:
FileStream aFile = new FileStream(“Log.txt”,FileMode.OpenOrCreate);
FileMode枚举具有几种成员:
Append------如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建一个新文件。FileMode.Append仅可以与枚举FileAccess.Write联合使用
Create------创建新文件;如果存在这样的文件,就破坏它。
CreateNew------创建新文件,但是如果已经存在此文件,则抛出异常
Open------打开现有的文件,但是不存在所指定的文件,则抛出异常
OpenOrCreate------如果文件存在,则规定打开文件,否则就创建新文件,如果文件已经存在,则保留在文件中的数据
Truncate------打开现有文件,清除其内容,然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期,必须存在有文件,否则就抛出异常
访问级别
前面的构造函数默认以只读模式打开文件,需要一个附加参数规定不同的访问级别,此参数是FileAccess参数。
FileStream aFile=new FileStream(”Log.txt”,fileMode.OpenOrCreate,FileAccess.Write)
FileAccess枚举有三种类型:Read、Write、ReadWrite.此属性的作用是:基于用户的身份验证级别改变用户对文件的访问
读取文件的位置用seek:public long Seek(long offset,SeekOrigin origin)
Long offset是规定文件指针以字节为单位的移动距离;SeekOrigin origin是规定开始计算的起始位置,此枚举包含3个值:Begin,Current和End。
例:aFile.Seek(8,SeekOrigin.Begin);// SeekOrigin.Begin指得是文件指针从文件的第一个字节起;而参数‘8‘指得是移动到文件的第8个字节
例2:afile.Seek(2,SeekOrigin.Current)//在当前位置开始,再移动2个字节。
例3:aFile.Seek(-5,SeekOrigin.End)//在文件末端位置开始,倒数5个字节。
FileStream aFile = new FileStream(“Log.txt”,FileMode.CreatcNew);
StreamWriter sw = new StreamWriter(aFile);
也可直接从文件中创建StreamWriter对象:
StreamWriter sw = new StreamWriter(“Log.txt”,true);
后面这个Boolean值规定是附加文件还是创建新文件,如果此值为false,则就创建一个新文件,或者截取现有文件并打开它。如果此值设置为true,则打开文件,保留原来的数据,如果找不到文件,则创建一个新文件。
File使用的是文件级别,可以直接随机访问seek Stream 则是字符串级别
如果需要网上下载保存图片等,需要转化为byte[] 使用filestream