数据库编程-中级篇 断开式

断开式的关键对象是Dataset,因为DataSet包含了3个重要的集合,使得DataSet可以看成一个断开连接的数据库副本:

DataSet: 1.DataTableCollection   2.DataRelationCollection   3.PropertyCollection

DataSet的主要属性:

除了Tables、Relations和ExtendedProperties属性之外,还有以下属性:

CaseSensitive 表示Datatable对象中的字符串是是否区分大小写,默认为false 即不区分大小写

DataSetname 表示DataSet的一个友好名,通常通过构造参数指定

EnforceConstraints 获取或设置一个值,该值指示在尝试执行任何更新操作时是否遵循约束规则。

HasErrors 获取一个值,指示在此DataSet种任何DataTable对象中数据行是否存在错误

RemodtingFormat 定义DataSet在传输时内容的序列化方式【二进制序列化或xml序列化(默认值)】

DataSet的主要方法

AcceptChanges() 提交自加载此DataSet或上次调用AcceptChanges以来对其进行的所有更改。

Clear()通过移除所有DataTable表中的所有行来清楚任何DataSet的数据。

Clone() 复制DataSet的结构,而不是DataSet的数据,包括所有DataTable架构、关系和约束

Copy()赋值该DataSet的结构和数据

HasChanges() 获取一个值,该值指示DataSet是否有更新,包括新增行、已删除的行或已修改的行。

Merge() 将制定的DataSet合并到当前的DataSet中

ReadXml()基于XML 架构和从流中读取的数据,定义DataSet对象的结构病用于数据填充它

RejectChanges() 回滚自创建Dataset以来或上次调用AcceptChanges()以来对其进行的所有更改

WriteXml() 把DataSet的内容写入一个有效的数据流

例如:

//建立DataSet对象并添加一些属性
   DataSet carsInventoryDS = new DataSet("Car Inventory");
   carsInventoryDS.ExtendedProperties["TimeStamp"] = DateTime.Now;
   carsInventoryDS.ExtendedProperties["DataSetID"] = Guid.NewGuid();
   carsInventoryDS.ExtendedProperties["Company"] = "Mikko's Hot Tub Super store";

只有在DataSet中插入DataTable,DataSet才有意义。

DataTable->DataColumn 的属性

AllowDBNull 该属性用来指示对表中的行,此列值是否允许空值,默认为true  对应Sql:   is null

AutoIncrement、AutoIncrementSeed 和AutoIncrementStep 这些属性用来配置该类的自增行为 对应Sql identity(1,1)

Caption 该属性用来获取或设置要显示的列的标题,它允许我们为数据库列名定义一个用户友好的版本。对应sql:as  fieldname

ColumnMapping:该属性决定当使用DataSet.WriteXml()来把DataSet保存到XML文件时,该列将以什么样的形式呈现。把数据列写成XML元素、XML特性或文本的形式。

ColumnName 该属性用来获取或设置列集合中的列名(在DataTable内部以什么样的名字呈现) ,默认的列名是ColumnN

DataType 该属性定义了存储在列中的数据类型(如string,bool,float)  sql:int varchar(30)

DefaultValue 该属性用来获取或设置在创建新行时列的默认值,对应sql:default

Expression 该属性用来获取或设置表达式,用于筛选行,计算列中的值或创建聚合列

Ordinal 该属性用来以数字形式获取DataTable中列在Columns结合中的位置  dt.getValue(i)

ReadOnly 该属性指示如果向表中添加了行,列是否允许更改,默认为false

Table 该属性用来获取DataColumn所属的DataTable

Unique  该属性用来获取或设置一个值,指示列的没遗憾管是否必须是唯一的 对应sql: unique 约束

DataTable->DataRolw类型的主要成员

HasErrors  HasErrors属性返回一个布尔值,指示改行是否存在错误

GetColumnsInError() GetColumnsInError()可以用来获取包含错误的成员,GetColumnError()获取错误说明

GetColumnError()  CelarError()用来清除改行的所有错误

ItemArray 这个属性通过一个对象数组来获取或设置慈航的所有列值

RowState 这个属性用来得到DataTable中的当前DataRow的状态,值有RowState枚举定义(如 行可以被标记为新增、已修改、未改变或已删除)

AcceptChanges()和RejectChanges() 这些方法提交或拒绝自上次调用AcceptChanges以来对改行进行的所有更改

BeginEdit() EndEdit() 和CancelEdit() 这些方法开始、结束和取消对某DataRow对象的编辑操作

Delete() 这个方法能标记改行为待删除、调用AcceptChanges()后移除改行

IsNull 这个方法获取一个值,该值指示指定的列是否包含空值

使用DataRow和使用DataColumn有些不同,因为没有公共构造函数,所以不能直接创建该类的实例,只能从某个DataTable获得新的DataRow  

如: DataRow dr=DateTable.NewRow(); //该方法能让你获得一个该表的下一个“插槽”。

dr["PetName"]="erts";

DataTable.Rows.Add(dr);

DataRowState枚举的值

Added 该行意添加到DataRowCollection中,AcceptChanges()尚未调用。

Deleted 改行标记为通过DataRow的Delete()方法被删除,并且没有调用AcceptChanges()方法

Detached 改行已被创建,但不属于任何DataRowCollection.DataRow在一下情况下立即处于此状态:创建之后,添加到集合中之前或者从集合中移除之后

Modified 改行已经被修改,AcceptChanges()尚未调用

UnChanged 改行自上次调用AcceptChanges()以来尚未更改。

DataRowVersion枚举值

Current 表示行的当前值,即使在做出改变后

Default  DataRowState默认值 对于Added Modified或Deleted值得DataRowState,默认版本就是Current.对于Detached的DataRowState版本就是Proposed

Original 表示首次插入DataRow的值,或AcceptChanges()最后一次被嗲用后的值。

DataTable类型的主要成员

CaseSensitie 表示表中的字符串比较是否区分大小写 ,默认为false

ChildRelations 获取此DataTable的自关系的集合

Constraints 获取由该表维护的约束的集合

Copy() 将某个DataTable的架构和数据复制到新的实例中

DataSet 获取词表所属的DataSet

DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图

ParentRelations获取该DataTable的父关系的集合

PrimaryKey 获取或设置充当数据表主键的列的数组

TableName 获取或设置表名,同样能够通过构造函数参数指定这个属性。

例如:DataTable inventoryTable=new DataTable("Inventory")

           inventoryTable.PrimaryKey=new DataColumn[]{ inventoryTable.Columns[0] };

ds.Tables.Add(inventoryTable);

使用数据适配器 

DbDataAdapter类的核心成员

Fill()  执行Sql select 命令,(由selectCommand属性指定)查询数据库并将数据加载到DataTable中

SelectCommand、InsertCommand、UpdateCommand、DeleteCommand():建立用于Fill()和Update()方法的由数据库执行的SQL命令

Update() 执行update、insert、delete命令(由InsertCommand、UpdateCommand、DeleteCommand属性指定来持久化DataTable修改到数据库中)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章