Share via


SqlCommand.ExecuteNonQuery Metodo

Definizione

Permette di eseguire un'istruzione Transact-SQL in base alla connessione e restituisce un numero di righe modificate.

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

Restituisce

Numero di righe interessate.

Eccezioni

Un SqlDbType oggetto diverso da Binary o VarBinary è stato usato quando Value è stato impostato su Stream . Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

-oppure-

Un SqlDbType oggetto diverso da Char, NChar, NVarChar, VarChar o Xml è stato usato quando Value è stato impostato su . TextReader

-oppure-

Un SqlDbType oggetto diverso da Xml è stato usato quando Value è stato impostato su XmlReader .

È stata generata un'eccezione durante l'esecuzione del comando su una riga bloccata. Tale eccezione non viene generata quando si usa Microsoft .NET Framework Versione 1.0.

-oppure-

Si è verificato un timeout durante un'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Si è verificato un errore in un Stream oggetto o XmlReaderTextReader durante un'operazione di streaming. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'elemento SqlConnection chiuso o eliminato durante l'operazione di flusso. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

L'oggetto Stream o XmlReaderTextReader è stato chiuso durante un'operazione di streaming. Per altre informazioni sul flusso, vedere Supporto del flusso SqlClient.

Esempio

Nell'esempio seguente viene creato un oggetto SqlCommand e quindi viene eseguito usando ExecuteNonQuery. L'esempio viene passata una stringa che è un'istruzione Transact-SQL , ad esempio UPDATE, INSERT o DELETE, e una stringa da usare per connettersi all'origine dati.

// <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>

Commenti

È possibile usare per ExecuteNonQuery eseguire operazioni di catalogo, ad esempio eseguendo query sulla struttura di un database o creando oggetti di database, ad esempio tabelle, o per modificare i dati in un database senza usare un'istruzione DataSet UPDATE, INSERT o DELETE.

Anche se non ExecuteNonQuery restituisce righe, i parametri di output o i valori restituiti mappati ai parametri vengono popolati con i dati.

Nel caso delle istruzioni UPDATE, INSERT e DELETE, il valore restituito è il numero di righe interessate dal comando. Per tutti gli altri tipi di istruzioni, il valore restituito è -1. Quando esiste un trigger in una tabella inserita o aggiornata, il valore restituito include il numero di righe interessate dall'operazione di inserimento o aggiornamento e dal numero di righe interessate dal trigger o dai trigger. Quando SET NOCOUNT ON è impostato sulla connessione (prima o come parte dell'esecuzione del comando o come parte di un trigger avviato dall'esecuzione del comando) le righe interessate da singole istruzioni interrompono il contributo al conteggio delle righe interessate da questo metodo. Se non vengono rilevate istruzioni che contribuiscono al conteggio, il valore restituito è -1. Se si verifica un rollback, il valore restituito è anche -1.

Si applica a