使用SqlDataReader来操作数据库

1SqlDataAdapter简介

SqlDataAdapter DataSet SQL Server 之间的桥接器,用于检索和保存数据。它通过对数据源使用适当的 Transact-SQL 语句映射 Fill(它可更改 DataSet 中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet 中的数据)来提供这一桥接。

SqlDataAdapter 填充 DataSet 时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。但是,除非 MissingSchemaAction 属性设置为 AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema,让 SqlDataAdapter 创建 DataSet 的架构,并在用数据填充它之前就将主键信息包括进去。

2、构造函数

1public SqlDataAdapter ()

当创建 SqlDataAdapter 的实例时,下面的读/写属性将设置为以下初始值。

属性

初始值

MissingMappingAction 确定传入数据没有匹配的表或列时需要执行的操作。确定源表或源列中缺少映射时发生的操作

MissingMappingAction.Passthrough

MissingSchemaAction 确定现有 DataSet 架构与传入数据不匹配时需要执行的操作。指定在将数据添加到 DataSet 而缺少要求的 DataTable DataColumn 时要采取的操作。

MissingSchemaAction.Add

可以通过单独调用属性来更改任何这些属性的值。

MissingMappingAction

成员名称

说明

Error

如果缺少指定的列映射,则生成 InvalidOperationException 

Ignore

忽略没有映射的列或表。返回 空引用(在 Visual Basic 中为 Nothing)。 

Passthrough

创建源列或源表,并使用其原始名称将其添加到 DataSet 

MissingSchemaAction

 

Add

添加必需的列以完成架构。

Ignore

忽略额外列。

Error

如果缺少指定的列映射,则生成 InvalidOperationException

AddWithKey

添加必需的列和主键信息以完成架构。 有关如何将主键信息添加到 DataTable 的更多信息,请参见 FillSchema。为与用于 OLE DB .NET Framework 数据提供程序一起正确运行,AddWithKey 要求本机 OLE DB 提供程序通过设置 DBPROP_UNIQUEROWS 属性获得必需的主键信息,然后通过检查 IColumnsRowset 中的 DBCOLUMN_KEYCOLUMN 确定哪些列是主键列。 作为一种备选方法,用户可以在每个 DataTable 上显式设置主键约束。 这将确保对与现有记录匹配的传入记录进行更新,而不是追加。 当使用 AddWithKey 时,用于 SQL Server .NET Framework 数据提供程序将 FOR BROWSE 子句追加到正在执行的语句。 用户应该注意潜在的副作用,例如对 SET FMTONLY ON 语句的使用产生的干扰。 有关更多信息,请参见“SQL Server 联机丛书

 

2public SqlDataAdapter (SqlCommand selectCommand)

初始化 SqlDataAdapter 类的新实例,用指定的 SqlCommand 作为 SelectCommand 的属性。

3public SqlDataAdapter (string selectCommandText, SqlConnection selectConnection)

使用 SelectCommand SqlConnection 对象初始化 SqlDataAdapter 类的新实例

4public SqlDataAdapter (string selectCommandText, string selectConnectionString)

SelectCommand 和一个连接字符串初始化 SqlDataAdapter 类的新实例

 

3、实现与数据源之间互通的属性

SelectCommand 属性

public SqlCommand SelectCommand { get; set; }

 

获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。在 Fill 过程中使用的 SqlCommand,用来从数据库中为 DataSet 中的位置选择记录。

 

DeleteCommand 属性

public SqlCommand DeleteCommand { get; set; }

 

获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录

Update 过程中使用 SqlCommand,以在数据库中删除对应于 DataSet 中已删除行的记录。在 Update 过程中,如果未设置此属性而且 DataSet 中存在主键信息,那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下,可以自动生成 DeleteCommand。然后,SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息

 

InsertCommand 属性和UpdateCommand 属性

     DeleteCommand 属性类似

 

4、填充DataSet数据集

 

public override int Fill (DataSet dataSet)

DataSet 中添加或刷新行以匹配使用 DataSet 名称的数据源中的行,并创建一个名为“Table” DataTable

返回值:已在 DataSet 中成功添加或刷新的行数。这不包括受不返回行的语句影响的行。

 

public int Fill (DataSet dataSet, string srcTable)

DataSet 中添加或刷新行以匹配使用 DataSet 名称的数据源中的行,并创建一个名为“srcTable” DataTable。若省掉第二个参数时,默认把这个表从‘0’开始存储并命名为“Table”既有ds.Table[0]

5、更新数据源

public int Update (DataTable dataTable)

为指定 DataTable 中每个已插入、已更新或已删除的行调用相应的 INSERTUPDATE DELETE 语句。

参数dataTable:用于更新数据源的 DataTable。返回值:DataSet 中成功更新的行数。

 

public int Update (DataSet dataSet, string srcTable)

为具有指定 DataTable 名称的 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERTUPDATE DELETE 语句。

public override int Update (DataSet dataSet)

   为指定 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERTUPDATE DELETE 语句。

public DataTable FillSchema (DataTable dataTable, SchemaType schemaType)

根据指定的 SchemaType 配置指定 DataTable 的架构。

SchemaType枚举值

Source

忽略 DataAdapter 上的任何表映射。使用传入架构配置 DataSet,而不应用任何转换。

Mapped

将任何现有的表映射应用到传入架构。用转换的架构配置 DataSet

备注

通常应将 SchemaType 设置为 Mapped,因为这样将使用任何已建立的表和列映射。

public override DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType)

将名为“Table” DataTable 添加到指定的 DataSet 中,并根据指定的 SchemaType 配置架构以匹配数据源中的架构。dataSet要将架构插入其中的 DataSet

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值