SqlCommandBuilder 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
自动生成用于协调通过关联的 SQL Server 数据库对 DataSet 所做更改的单表命令。 此类不能被继承。
public ref class SqlCommandBuilder sealed : System::Data::Common::DbCommandBuilder
public sealed class SqlCommandBuilder : System.Data.Common.DbCommandBuilder
type SqlCommandBuilder = class
inherit DbCommandBuilder
Public NotInheritable Class SqlCommandBuilder
Inherits DbCommandBuilder
- 继承
-
SqlCommandBuilder
示例
以下示例使用 SqlCommand、 SqlDataAdapter 和 SqlConnection从数据源中选择行。 该示例传递了连接字符串、作为 Transact-SQL SELECT 语句的查询字符串,以及作为数据库表名称的字符串。 然后,该示例创建一个 SqlCommandBuilder。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace SqlCommandBuilderCS
{
class Program
{
static void Main()
{
string cnnst = "";
string queryst = "";
string tablen = "";
DataSet ds = SelectSqlRows(cnnst, queryst, tablen);
}
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
builder.GetUpdateCommand();
//Without the SqlCommandBuilder this line would fail
adapter.Update(dataSet, tableName);
return dataSet;
}
}
注解
不会SqlDataAdapter自动生成协调对 的更改DataSet与关联的 SQL Server 实例所需的 Transact-SQL 语句。 但是,如果设置了 SelectCommand 的 属性,则可以创建SqlCommandBuilder对象来自动生成单表更新的 SqlDataAdapterTransact-SQL 语句。 然后,未设置的任何其他 Transact-SQL 语句都会由 SqlCommandBuilder生成。
每当设置 DataAdapter 属性时, 会将SqlCommandBuilder自身注册为事件的侦听器RowUpdating。 一次只能将一个 SqlDataAdapter 或 SqlCommandBuilder 对象相互关联。
若要生成 INSERT、UPDATE 或 DELETE 语句,请使用 SqlCommandBuilderSelectCommand 属性自动检索所需的元数据集。 如果在检索元数据后(例如在第一次更新之后)更改 SelectCommand ,则应调用 RefreshSchema 方法来更新元数据。
SelectCommand
还必须至少返回一个主键或唯一列。 如果不存在,则会生成 InvalidOperation 异常,并且不会生成命令。
SqlCommandBuilder还使用 Connection引用的 SelectCommand、 CommandTimeout和 Transaction 属性。 如果修改了其中一个或多个属性,或者替换了SelectCommand自身,则用户应调用 RefreshSchema 。 否则, InsertCommandUpdateCommand和 DeleteCommand 属性将保留其以前的值。
如果调用 Dispose, SqlCommandBuilder 则会取消与 SqlDataAdapter的关联,并且不再使用生成的命令。
构造函数
SqlCommandBuilder() |
初始化 SqlCommandBuilder 类的新实例。 |
SqlCommandBuilder(SqlDataAdapter) |
使用关联的 SqlCommandBuilder 对象初始化 SqlDataAdapter 类的新实例。 |
属性
CatalogLocation |
对于 CatalogLocation 类的实例,设置或获取 SqlCommandBuilder。 |
CatalogSeparator |
设置或获取一个字符串,该字符串用作 SqlCommandBuilder 类的实例的目录分隔符。 |
DataAdapter |
获取或设置自动为其生成 Transact-SQL 语句的一个 SqlDataAdapter 对象。 |
QuotePrefix |
获取或设置在指定其名称中包含空格或保留标记等字符的 SQL Server 数据库对象(如表或列)时使用的一个或多个起始字符。 |
QuoteSuffix |
获取或设置在指定其名称中包含空格或保留标记等字符的 SQL Server 数据库对象(如表或列)时使用的一个或多个结束字符。 |
SchemaSeparator |
获取或设置要用作架构标识符和任何其他标识符之间的分隔符的字符。 |
方法
DeriveParameters(SqlCommand) |
从在 SqlCommand 中指定的存储过程中检索参数信息并填充指定的 Parameters 对象的 SqlCommand 集合。 |
GetDeleteCommand() |
获取自动生成的、对数据库执行删除操作所需的 SqlCommand 对象。 |
GetDeleteCommand(Boolean) |
获取自动生成的、对数据库执行删除操作所需的 SqlCommand 对象。 |
GetInsertCommand() |
获取自动生成的、对数据库执行插入操作所需的 SqlCommand 对象。 |
GetInsertCommand(Boolean) |
获取自动生成的、对数据库执行插入操作所需的 SqlCommand 对象。 |
GetUpdateCommand() |
获取自动生成的、对数据库执行更新操作所需的 SqlCommand 对象。 |
GetUpdateCommand(Boolean) |
获取自动生成的、对数据库执行更新操作所需的 SqlCommand 对象。 |
QuoteIdentifier(String) |
自动生成用于协调通过关联的 SQL Server 数据库对 DataSet 所做更改的单表命令。 此类不能被继承。 |
UnquoteIdentifier(String) |
给定了带引号的标识符时,返回该标识符的正确的不带引号的形式。 这包括正确地非转义该标识符的所有嵌入的引号。 |