Sdílet prostřednictvím


SqlCommandBuilder Třída

Definice

Automaticky vygeneruje příkazy s jednou tabulkou, které se používají k odsouhlasení změn provedených v souboru s přidruženou DataSet databází SQL Server. Tato třída se nemůže dědit.

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
Dědičnost
SqlCommandBuilder

Příklady

Následující příklad používá SqlCommand, spolu SqlDataAdapter a SqlConnectionk výběru řádků ze zdroje dat. Příkladu se předá připojovací řetězec, řetězec dotazu, který je příkazem SELECT jazyka Transact-SQL, a řetězec, který je názvem databázové tabulky. Příklad pak vytvoří 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;
            }
        }

Poznámky

Negeneruje SqlDataAdapter automaticky příkazy Jazyka Transact-SQL potřebné k odsouhlasení změn provedených v objektu s přidruženou DataSet instancí SQL Server. Pokud ale nastavíte SelectCommand vlastnost SqlDataAdapter, můžete vytvořit SqlCommandBuilder objekt pro automatické generování příkazů jazyka Transact-SQL pro aktualizace jedné tabulky. Všechny další příkazy jazyka Transact-SQL, které nenastavíte, se pak vygenerují pomocí SqlCommandBuilder.

Objekt se SqlCommandBuilder zaregistruje jako naslouchací proces pro RowUpdating události, kdykoli nastavíte DataAdapter vlastnost . Najednou můžete k sobě přidružit jenom jeden SqlDataAdapter objekt nebo SqlCommandBuilder objekt.

Chcete-li generovat příkazy INSERT, UPDATE nebo DELETE, SqlCommandBuilder používá SelectCommand vlastnost k automatickému načtení požadované sady metadat. Pokud změníte SelectCommand hodnotu po načtení metadat, například po první aktualizaci, měli byste volat metodu RefreshSchema pro aktualizaci metadat.

Musí SelectCommand také vrátit alespoň jeden primární klíč nebo jedinečný sloupec. Pokud žádné nejsou k dispozici, vygeneruje se výjimka InvalidOperation a příkazy se nevygenerují.

Používá SqlCommandBuilder také Connectionvlastnosti , CommandTimeouta , na Transaction které SelectCommandodkazuje . Uživatel by měl volat RefreshSchema , pokud jsou některé z těchto vlastností změněny nebo pokud SelectCommand je nahrazena sama o sobě. V opačném případě si InsertCommandvlastnosti , UpdateCommanda DeleteCommand zachovají své předchozí hodnoty.

Pokud zavoláte Dispose, dojde k SqlCommandBuilder odpojení od a vygenerované příkazy se už nebudou SqlDataAdapterpoužívat.

Konstruktory

SqlCommandBuilder()

Inicializuje novou instanci SqlCommandBuilder třídy .

SqlCommandBuilder(SqlDataAdapter)

Inicializuje novou instanci SqlCommandBuilder třídy s přidruženým SqlDataAdapter objektem.

Vlastnosti

CatalogLocation

Nastaví nebo získá CatalogLocation pro instanci SqlCommandBuilder třídy .

CatalogSeparator

Nastaví nebo získá řetězec použitý jako oddělovač katalogu pro instanci SqlCommandBuilder třídy .

DataAdapter

Získá nebo nastaví SqlDataAdapter objekt, pro který transact-SQL příkazy jsou automaticky generovány.

QuotePrefix

Získá nebo nastaví počáteční znak nebo znaky použít při zadávání SQL Server databázové objekty, jako jsou tabulky nebo sloupce, jejichž názvy obsahují znaky, jako jsou mezery nebo rezervované tokeny.

QuoteSuffix

Získá nebo nastaví koncový znak nebo znaky použít při zadávání SQL Server databázové objekty, jako jsou tabulky nebo sloupce, jejichž názvy obsahují znaky, jako jsou mezery nebo rezervované tokeny.

SchemaSeparator

Získá nebo nastaví znak, který má být použit pro oddělovač mezi identifikátor schématu a jakékoli jiné identifikátory.

Metody

DeriveParameters(SqlCommand)

Načte informace o parametru z uložené procedury zadané v SqlCommand a naplní kolekci Parameters zadaného SqlCommand objektu.

GetDeleteCommand()

Získá automaticky generovaný SqlCommand objekt potřebný k provedení odstranění databáze.

GetDeleteCommand(Boolean)

Získá automaticky generovaný SqlCommand objekt, který je nutný k provedení odstranění databáze.

GetInsertCommand()

Získá automaticky generovaný SqlCommand objekt potřebný k provedení vložení do databáze.

GetInsertCommand(Boolean)

Získá automaticky vygenerovaný SqlCommand objekt, který je nutný k provedení vložení do databáze.

GetUpdateCommand()

Získá automaticky generovaný SqlCommand objekt potřebný k provedení aktualizací v databázi.

GetUpdateCommand(Boolean)

Získá automaticky generovaný SqlCommand objekt potřebný k provedení aktualizací v databázi.

QuoteIdentifier(String)

Automaticky vygeneruje příkazy s jednou tabulkou, které se používají k odsouhlasení změn provedených v souboru s přidruženou DataSet databází SQL Server. Tato třída se nemůže dědit.

UnquoteIdentifier(String)

Při uvozovaném identifikátoru vrátí správný tvar tohoto identifikátoru bez uvozování. To zahrnuje správné zrušení uvozovek v identifikátoru.

Platí pro