更新数据源中的数据

适用于 .NET Framework .NET .NET Standard

下载 ADO.NET

修改数据的 SQL 语句(例如 INSERT, UPDATE或 DELETE)不返回行。 同样,许多存储过程执行操作但不返回行。 要执行不返回行的命令,请使用相应的 SQL 命令和 Connection 创建 Command 对象,并包含任何必需的 Parameters。 使用 ExecuteNonQuery 对象的 SqlCommand 方法执行命令。

注意

ExecuteNonQuery 方法返回一个整数,表示受已执行的语句或存储过程影响的行数。 如果执行了多个语句,则返回的值为受所有已执行语句影响的记录的总数。

示例

下面的代码示例执行语句 INSERT ,以使用 ExecuteNonQuery 将记录插入数据库中。

// Assumes connection is a valid SqlConnection.
connection.Open();

string queryString = "INSERT INTO Customers " +
"(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";

SqlCommand command = new SqlCommand(queryString, connection);
Int32 recordsAffected = command.ExecuteNonQuery();

以下代码示例执行由执行编录操作中的示例代码创建的存储过程。 该存储过程没有返回任何行,因此将使用 ExecuteNonQuery 方法,但该存储过程会接收输入参数并返回输出参数和返回值。

// Assumes command is a valid SqlCommand with an open connection.
command.CommandText = "InsertCategory";
command.CommandType = CommandType.StoredProcedure;

SqlParameter parameter = command.Parameters.Add("@RowCount", SqlDbType.Int);
parameter.Direction = ParameterDirection.ReturnValue;

parameter = command.Parameters.Add("@CategoryName", SqlDbType.NChar, 15);

parameter = command.Parameters.Add("@Identity", SqlDbType.Int);
parameter.Direction = ParameterDirection.Output;

command.Parameters["@CategoryName"].Value = "New Category";
command.ExecuteNonQuery();

Int32 categoryID = (Int32) command.Parameters["@Identity"].Value;
Int32 rowCount = (Int32) command.Parameters["@RowCount"].Value;

请参阅