SqlCommandBuilder 类

摘要:
但是,如果设置了SqlDataAdapter的SelectCommand属性,则可以创建SqlCommandBuilder对象以自动生成用于单表更新的Transact-SQL语句。无论何时设置DataAdapter属性,SqlCommandBuilder都将自己注册为RowUpdating事件的侦听器。一次只能将一个SqlDataAdapter与一个SqlCommandBuilder对象关联(反之亦然)。为了生成INSERT、UPDATE或DELETE语句,SqlCommandBuilder会自动使用SelectCommand属性来检索所需的元数据集。SelectCommand还必须至少返回一个主键列或唯一列。SqlCommandBuilder还使用SelectCommand引用的Connection、CommandTimeout和Transaction属性。如果调用Dispose,则SqlCommandBuilder和SqlDataAdapter之间的关联将被解除,生成的命令将不再使用。

自动生成单表命令,用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。

命名空间:System.Data.SqlClient
程序集:System.Data(在 system.data.dll 中)

SqlCommandBuilder 类第1张 语法
SqlCommandBuilder 类第2张
Visual Basic(声明)
Public NotInheritable Class SqlCommandBuilder
Inherits DbCommandBuilder
Visual Basic(用法)
Dim instance As SqlCommandBuilder
C#
public sealed class SqlCommandBuilder : DbCommandBuilder
C++
public ref class SqlCommandBuilder sealed : public DbCommandBuilder
J#
public final class SqlCommandBuilder extends DbCommandBuilder
JScript
public final class SqlCommandBuilder extends DbCommandBuilder
SqlCommandBuilder 类第1张 备注
SqlCommandBuilder 类第4张

SqlDataAdapter 不会自动生成实现 DataSet 的更改与关联的 SQL Server 实例之间的协调所需的 Transact-SQL 语句。但是,如果设置了 SqlDataAdapterSelectCommand 属性,则可以创建一个 SqlCommandBuilder 对象来自动生成用于单表更新的 Transact-SQL 语句。然后,SqlCommandBuilder 将生成其他任何未设置的 Transact-SQL 语句。

每当设置了 DataAdapter 属性,SqlCommandBuilder 就将其本身注册为 RowUpdating 事件的侦听器。一次只能将一个 SqlDataAdapter 与一个 SqlCommandBuilder 对象(或相反)互相关联。

为了生成 INSERT、UPDATE 或 DELETE 语句,SqlCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。如果在检索到元数据后(例如在第一次更新后)更改 SelectCommand,则应调用 RefreshSchema 方法来更新元数据。

SelectCommand 还必须至少返回一个主键列或唯一的列。如果什么都没有返回,就会产生 InvalidOperation 异常,不生成命令。

SqlCommandBuilder 还使用由 SelectCommand 引用的 ConnectionCommandTimeoutTransaction 属性。如果修改了这些属性中的一个或多个,或者替换了 SelectCommand 本身,用户则应调用 RefreshSchema。否则,InsertCommandUpdateCommandDeleteCommand 属性都保留它们以前的值。

如果调用 Dispose,则会解除 SqlCommandBuilderSqlDataAdapter 的关联,并且不再使用生成的命令。

SqlCommandBuilder 类第1张 示例
SqlCommandBuilder 类第6张

下面的示例结合 SqlDataAdapterSqlConnection,使用 SqlCommand 从数据源中选择行。向该示例传递了一个连接字符串、一个查询字符串(它是一个 Transact-SQL SELECT 语句)和一个数据库表名称字符串。然后该示例创建一个 SqlCommandBuilder

Visual Basic
Private Function SelectSqlRows(ByVal connectionString As String, _
ByVal queryString As String, ByVal tableName As String) As DataSet

Using connection As New SqlConnection(connectionString)

Dim adapter As New SqlDataAdapter()
adapter.SelectCommand = New SqlCommand(queryString, connection)
Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)

connection.Open()

Dim dataSet As DataSet = New DataSet
adapter.Fill(dataSet, tableName)

' Code to modify data in DataSet here

' Without the SqlCommandBuilder this line would fail.
adapter.Update(dataSet, tableName)

Return dataSet
End Using
End Function
public static DataSet SelectSqlRows(string connectionString,
string queryString, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(queryString, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

connection.Open();

DataSet dataSet = new DataSet();
adapter.Fill(dataSet, tableName);

//code to modify data in DataSet here

//Without the SqlCommandBuilder this line would fail
adapter.Update(dataSet, tableName);

return dataSet;
}
}

免责声明:文章转载自《SqlCommandBuilder 类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTTP metadata数据prototype1.6.0官方文档翻译(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

关于ArcMap中的地图文档单位

在ArcMap中地图文档的单位有度分秒、千米、米、十进制等很多种,但是ArcMap中的测量距离功能的实现必须建立在图层框架具有投影坐标系的情况下才能进行正确的计算,否则是不能进行的,IPolyline的Lenth属性获取的单位为十进制,需要转换成米。...

vsCode mongoDB插件 Azure Cosmos DB

安装完成后,要重启下vsCode会看到然后点击绿色的小按钮,选择MongoDB再输入MongoDB的连接地址。当然要先把本地的mongoDB数据库打开,cmd黑窗口输入mongod--dbpathxxxx打开本地数据库输入完成地址后,回车就可以连接到自己的MongoDB数据库了...

前端利器躬行记(7)——自制脚手架

path是Node.js中的路径模块path.resolve()用于解析绝对路径,__dirname可读取当前模块的目录名。静态资源最终路径=output.publicPath+加载器或插件的配置路径。假设html元素的背景是一条相对路径,那么最后生成的路径将会是“/img/lake.png”,其中配置的输出目录是“img”。paths.servedPath...

SpringBoot源码深度解析

Spring开源框架解决了企业开发的复杂性,简化了AOP的开发,IOCSpring配置越来越多,不易管理==如何自动配置Springboot,核心原则!Java领域最流行的技术!公司,如何演变结构!...

nginx重启

方法二:在启动命令-c前加-t2、重启Nginx服务方法一:进入nginx可执行目录sbin下,输入命令./nginx-sreload即可方法二:查找当前nginx进程号,然后输入命令:kill-HUP进程号实现重启nginx服务...

ES基本查询总结

ES与数据库比较查询操作Elasticsearch中当我们设置Mapping完毕后,就可以按照设定的方式导入数据。以下内容的原文需要参考ES官方文档1、结构化检索针对字段类型:日期、时间、数字类型,以及精确的文本匹配。结构化检索特点:*1)结构化查询,我们得到的结果总是非是即否,要么存于集合之中,要么存在集合之外。term查询是简单的,它接受一个字段名以及我...