1. SQLCommand命令介绍
SQLCommand是C#中一个非常常用的类,用于执行与数据库相关的操作,比如增、删、改、查等。它允许我们执行SQL语句,存储过程以及其他与数据库相关的命令。
1.1 创建SQLCommand对象
要使用SQLCommand,我们需要首先创建一个SQLCommand对象。可以使用构造函数来创建对象,并将SQL语句作为参数传递给构造函数。
string sql = "SELECT * FROM Customers";
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(sql, connection);
上面的代码创建了一个SQLCommand对象,并将查询语句作为参数传递给构造函数。同时还传递了一个SqlConnection对象,用于与数据库建立连接。
1.2 执行SQL命令
执行SQL命令可以使用SQLCommand的ExecuteReader、ExecuteNonQuery、ExecuteScalar方法。
1.2.1 ExecuteReader方法
ExecuteReader方法用于执行返回结果集的SQL查询语句。它返回一个SqlDataReader对象,该对象可以用于读取查询结果。
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
// 读取查询结果的逻辑
}
在上面的代码中,我们使用ExecuteReader方法执行查询,并通过循环逐行读取查询结果。
1.2.2 ExecuteNonQuery方法
ExecuteNonQuery方法用于执行不返回结果集的SQL命令,如插入、更新和删除等操作。
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("Rows affected: " + rowsAffected);
在这个例子中,我们执行了一个更新操作,并打印出受影响的行数。
1.2.3 ExecuteScalar方法
ExecuteScalar方法用于执行查询并返回结果集的第一行第一列的值。如果查询返回多个结果,只返回第一个结果。
object result = command.ExecuteScalar();
Console.WriteLine("Result: " + result);
在上面的代码中,我们执行了一个查询,并打印出结果集的第一个值。
2. DbTransaction事务处理
事务是一组对数据库的操作,要么全部执行成功,要么全部不执行。在数据库中执行多个相关操作时,应该将它们放在一个事务中,以确保数据的一致性。
2.1 开启事务
要使用事务处理,我们首先需要开启一个事务。
SqlTransaction transaction = connection.BeginTransaction();
上面的代码创建了一个SqlTransaction对象,并使用BeginTransaction方法开启了一个事务。
2.2 执行事务操作
在事务中执行数据库操作与正常的执行类似,只不过我们需要将SqlCommand对象与事务关联起来。
command.Transaction = transaction;
command.ExecuteNonQuery();
在上面的代码中,我们将SqlCommand与事务关联起来,并执行了一个数据库操作。
2.3 提交或回滚事务
在完成事务操作之后,我们需要根据操作的结果决定是提交还是回滚事务。
try
{
// 执行事务操作
transaction.Commit();
Console.WriteLine("Transaction committed.");
}
catch (Exception ex)
{
// 异常处理逻辑
transaction.Rollback();
Console.WriteLine("Transaction rolled back.");
}
在上面的代码中,我们使用Commit方法提交事务,如果事务中的操作出现异常,则使用Rollback方法回滚事务。
总结
本文介绍了C#中的SQLCommand命令与DbTransaction事务处理。SQLCommand是C#中执行与数据库相关操作的核心类,通过它我们可以执行SQL查询语句、插入、更新和删除等命令。而事务处理则是为了保证数据库操作的一致性,将多个相关的操作放在一个事务中,要么全部执行成功,要么全部不执行。
在使用SQLCommand时,我们可以使用ExecuteReader、ExecuteNonQuery和ExecuteScalar方法来执行不同类型的命令。而在使用事务处理时,我们需要使用BeginTransaction方法开启一个事务,并将SqlCommand对象与事务关联起来。最后根据操作的结果决定是提交还是回滚事务。