Sdílet prostřednictvím


SqlCommand.ExecuteNonQuery Metoda

Definice

Spustí příkaz Jazyka Transact-SQL proti připojení a vrátí počet ovlivněných řádků.

public:
 override int ExecuteNonQuery();
public override int ExecuteNonQuery ();
override this.ExecuteNonQuery : unit -> int
Public Overrides Function ExecuteNonQuery () As Integer

Návraty

Počet ovlivněných řádků

Výjimky

Při SqlDbType nastavení na Stream hodnotu byla použita Value jiná hodnota než Binary nebo VarBinary. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

-nebo-

Při SqlDbType nastavení na TextReader hodnotu se použila Value jiná hodnota než Char, NChar, NVarChar, VarChar nebo XML.

-nebo-

Při SqlDbType nastavení na XmlReader hodnotu byla použita Value jiná hodnota než XML.

Při provádění příkazu na uzamčený řádek došlo k výjimce. Tato výjimka se negeneruje, pokud používáte rozhraní Microsoft .NET Framework verze 1.0.

-nebo-

Během operace streamování došlo k vypršení časového limitu. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Během operace streamování došlo v objektu Stream nebo TextReaderXmlReader k chybě. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Zavřený SqlConnection nebo vynechaný během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Objekt Stream nebo XmlReaderTextReader byl uzavřen během operace streamování. Další informace o streamování najdete v tématu Podpora streamování SqlClient.

Příklady

Následující příklad vytvoří a pak ho SqlCommand spustí pomocí ExecuteNonQuery. Příklad je předán řetězec, který je příkazem Jazyka Transact-SQL (například UPDATE, INSERT nebo DELETE) a řetězec, který se má použít pro připojení ke zdroji dat.

// <Snippet1>
using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandCS
{
    class Program
    {
        static void Main()
        {
            string str = "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
            string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
            CreateCommand(qs, str);
        }
        private static void CreateCommand(string queryString,
            string connectionString)
        {
            using (SqlConnection connection = new SqlConnection(
                       connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
}
// </Snippet1>

Poznámky

Můžete použít ExecuteNonQuery k provádění operací katalogu (například dotazování struktury databáze nebo vytváření databázových objektů, jako jsou tabulky), nebo ke změně dat v databázi bez použití DataSet příkazu UPDATE, INSERT nebo DELETE.

Přestože nevrací ExecuteNonQuery žádné řádky, všechny výstupní parametry nebo návratové hodnoty namapované na parametry se naplní daty.

U příkazů UPDATE, INSERT a DELETE je návratovou hodnotou počet řádků ovlivněných příkazem. Pro všechny ostatní typy příkazů je návratová hodnota -1. Pokud v vložené nebo aktualizované tabulce existuje aktivační událost, návratová hodnota zahrnuje počet řádků ovlivněných operací vložení nebo aktualizace a počet řádků ovlivněných triggerem nebo triggery. Pokud je na připojení nastavená funkce SET NOCOUNT ON (před spuštěním příkazu nebo jako součást spuštění příkazu nebo jako součást triggeru iniciovaného spuštěním příkazu), řádky ovlivněné jednotlivými příkazy přestanou přispívat k počtu ovlivněných řádků, který je vrácen touto metodou. Pokud nejsou zjištěny žádné příkazy, které přispívají k počtu, návratová hodnota je -1. Pokud dojde k vrácení zpět, je návratová hodnota také -1.

Platí pro