1. executenonquery 的定义和用途
在 ADO.NET 中,executenonquery 是一个用于执行 SQL 数据库操作的方法。它通常用于执行 INSERT、UPDATE、DELETE 操作等写入操作,而不返回任何数据。
2. executenonquery 的语法
public int ExecuteNonQuery();
public Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken);
2.1 ExecuteNonQuery 方法
ExecuteNonQuery 方法用于执行 SQL 命令并返回受影响的行数。若为非查询语句,受影响的行数指的是 INSERT、UPDATE、DELETE 操作影响的行数。若为查询语句,受影响的行数为 -1。
下面是一个实际的例子:
string sql = "INSERT INTO TestTable (id, name) VALUES (1, 'Test Name')";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
int result = command.ExecuteNonQuery();
Console.WriteLine("受影响的行数: {0}", result);
}
2.2 ExecuteNonQueryAsync 方法
由于 ExecuteNonQuery 方法是阻塞式的,系统在执行命令期间会停止响应,阻止应用程序的继续执行。在执行较长时间的操作时,这会带来问题。ExecuteNonQueryAsync 方法是为了解决这个问题而生的。它是异步执行的,可以使应用程序继续执行。
下面是一个实际的例子:
string sql = "INSERT INTO TestTable (id, name) VALUES (1, 'Test Name')";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
int result = await command.ExecuteNonQueryAsync();
Console.WriteLine("受影响的行数: {0}", result);
}
3. executenonquery 的返回值
在执行 INSERT、UPDATE、DELETE 操作时,ExecuteNonQuery 方法会返回一个 Int32 类型的值,表示被操作的行数。
如果执行的是非查询操作,则返回受影响的行数;如果执行的是查询操作,则返回 -1。
下面是一个示例,展示如何返回被操作的行数:
string sql = "delete from emp where empno=7499";
using (OracleConnection connection = new OracleConnection(connectionString))
{
OracleCommand command = new OracleCommand(sql, connection);
connection.Open();
int result = command.ExecuteNonQuery();
Console.WriteLine("受影响的行数: {0}", result);
}
4. executenonquery 的用途
executenonquery 方法主要用于非查询 SQL 语句,如 INSERT、UPDATE 和 DELETE 操作。通常,执行非查询操作时,我们对返回的数据不感兴趣,我们只想知道操作影响到的记录数。在这种情况下,使用 ExecuteNonQuery 方法性能更好。
下面是一个示例,展示如何使用 ExecuteNonQuery 方法执行 INSERT 操作:
string sql = "INSERT INTO TestTable (id, name) VALUES (1, 'Test Name')";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
int result = command.ExecuteNonQuery();
Console.WriteLine("受影响的行数: {0}", result);
}
5. 总结
executenonquery 是 ADO.NET 中用于执行 SQL 数据库操作的方法,它通常用于执行 INSERT、UPDATE、DELETE 等写入操作,而不返回任何数据。
ExecuteNonQuery 方法用于执行 SQL 命令并返回受影响的行数;ExecuteNonQueryAsync 方法是异步执行的。
在执行非查询操作时,使用 ExecuteNonQuery 方法性能更好。