共用方式為


SqlCommand.ExecuteNonQuery 方法

定義

針對連接執行 Transact-SQL 陳述式,並傳回受影響的資料列數目。

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

傳回

受影響的資料列數目。

例外狀況

SqlDbType當 設定 Stream 為 時 Value ,使用了BinaryVarBinary以外的 。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

-或-

SqlDbType當 設定 TextReader 為 時 Value ,會使用CharNCharNVarCharVarCharXml以外的 。

-或-

SqlDbType當 設定 XmlReader 為 時 Value ,會使用Xml以外的 。

對鎖定的資料列執行命令時發生例外狀況。 當您使用 Microsoft .NET Framework 1.0 版時不會產生這個例外狀況。

-或-

串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

在串流作業期間, XmlReaderTextReader 物件中 Stream 發生錯誤。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

在串流作業期間已關閉或卸除的 SqlConnection。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

XmlReaderStream 串流作業期間,或 TextReader 物件已關閉。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

範例

下列範例會建立 , SqlCommand 然後使用 來執行它 ExecuteNonQuery 。 此範例會傳遞字串,該字串是 Transact-SQL 語句 (,例如 UPDATE、INSERT 或 DELETE) ,以及用來連接到資料來源的字串。

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

備註

例如,您可以使用 ExecuteNonQuery 來執行目錄作業 (,查詢資料庫的結構或建立資料庫物件,例如資料表) ,或藉由執行 UPDATE、INSERT 或 DELETE 子句來變更資料庫中 DataSet 的資料。

ExecuteNonQuery雖然 不會傳回任何資料列,但對應至參數的任何輸出參數或傳回值會填入資料。

對 UPDATE、INSERT 和 DELETE 陳述式而言,傳回值是受命令影響的資料列數目。 對其他類型的陳述式而言,傳回值為 -1。 當插入或更新的資料表上有觸發程式時,傳回值會包含受插入或更新作業影響的資料列數目,以及觸發程式或觸發程式所影響的資料列數目。 在連接上設定 SET NOCOUNT ON 時, (之前或做為執行命令的一部分,或是由命令執行所起始的觸發程式之一部分,) 個別語句所影響的資料列停止影響此方法所傳回的資料列計數。 如果未偵測到對計數造成貢獻的語句,則傳回值為 -1。 如果發生復原,傳回值也是 -1。

適用於