更新数据源中的数据

适用于:.NET Framework .NET .NET Standard

下载 ADO.NET

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

注意

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;

请参阅