SqlCommandBuilder及SqlCommand简要使用

  • SqlCommandBuilder

SqlCommandBuilder 是 ADO.NET 中的一个类,用于自动生成 SqlCommand 的插入、更新和删除命令,以简化对数据表进行修改的操作。

当使用 SqlDataAdapter 填充 DataSet 并对其进行修改后,您通常需要将这些修改反馈回数据库。SqlCommandBuilder 可以自动根据 DataSet 的结构和内容生成相应的 SQL 命令,以便进行数据的插入、更新和删除。

使用 SqlCommandBuilder 有以下主要步骤:

  • 创建 SqlCommandBuilder 对象:使用 SqlDataAdapter 创建 SqlCommandBuilder 对象,并将 SqlDataAdapter 对象传递给它。
    SqlDataAdapter adapter = new SqlDataAdapter(selectCommand);
    SqlCommandBuilder commandBuilder = new SqlCommandBuilder(adapter);
  • 自动生成命令:一旦 SqlCommandBuilder 与 SqlDataAdapter 关联,它将根据 SqlDataAdapter 的 SelectCommand 自动生成相应的 InsertCommand、UpdateCommand 和 DeleteCommand。这些命令将针对 DataSet 中的数据执行相应的操作。

// 自动生成插入、更新和删除命令
adapter.InsertCommand = commandBuilder.GetInsertCommand();
adapter.UpdateCommand = commandBuilder.GetUpdateCommand();
adapter.DeleteCommand = commandBuilder.GetDeleteCommand();

  • 更新数据:使用 SqlDataAdapter 的 Update 方法,将修改后的 DataSet 中的数据反馈回数据库。

adapter.Update(dataSet, "TableName");

在调用 Update 方法时,SqlDataAdapter 将根据 SqlCommandBuilder 自动生成的命令来执行相应的数据库操作,将修改的数据插入、更新或删除到数据库中。

请注意,为了使 SqlCommandBuilder 能够正确生成命令,SqlDataAdapter 的 SelectCommand 必须提供有效的查询语句,并且查询结果中包含主键信息。这样,SqlCommandBuilder 才能根据主键来生成正确的更新和删除命令。

以下是一个简单的示例,演示了 SqlCommandBuilder 的用法:

string connectionString = "your_connection_string";
string sqlQuery = "SELECT * FROM Customers";
using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter(sqlQuery, connection);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(adapter);
DataSet dataSet = new DataSet();
// 填充数据到 DataSet 中的一个
DataTable adapter.Fill(dataSet, "Customers");
// 修改 DataSet 中的数据
// 自动生成命令
adapter.InsertCommand = commandBuilder.GetInsertCommand();
adapter.UpdateCommand = commandBuilder.GetUpdateCommand();
adapter.DeleteCommand = commandBuilder.GetDeleteCommand();
// 更新数据到数据库 adapter.Update(dataSet, "Customers"); }

通过使用 SqlCommandBuilder,您可以省去手动编写插入、更新和删除命令的过程,简化了对 DataSet 中数据的修改和反馈回数据库的操作。这样可以减少错误,并提高开发效率。

  • SqlCommand

SqlCommand 是 ADO.NET 中用于执行 SQL 命令的类。它表示要在 SQL 数据库上执行的命令,可以是查询语句(SELECT)、插入语句(INSERT)、更新语句(UPDATE)或删除语句(DELETE)。

使用 SqlCommand,您可以执行以下操作:

  • 创建 SqlCommand 对象:首先,您需要创建一个 SqlCommand 对象,并指定要执行的 SQL 命令和连接对象。

SqlCommand command = new SqlCommand("SELECT * FROM Customers", connection);

在上述示例中,我们创建了一个 SqlCommand 对象,并指定要执行的 SELECT 语句以及与之关联的 SqlConnection 对象。

  • 设置参数(可选):如果您的 SQL 命令包含参数,您可以使用 Parameters 属性添加参数并为其指定值。

command.Parameters.AddWithValue("@FirstName", "John");

在上述示例中,我们使用 AddWithValue 方法为 SQL 命令中的参数 "@FirstName" 设置了一个值。

  • 执行命令:使用 SqlCommand 的 ExecuteReader、ExecuteNonQuery 或 ExecuteScalar 方法来执行 SQL 命令。
  • ExecuteReader:对于 SELECT 语句,使用 ExecuteReader 方法返回一个 SqlDataReader 对象,用于读取查询结果的数据。

SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 处理查询结果 }

  • ExecuteNonQuery:对于 INSERT、UPDATE 或 DELETE 语句,使用 ExecuteNonQuery 方法执行命令,并返回受影响的行数。

int rowsAffected = command.ExecuteNonQuery();

  • ExecuteScalar:对于返回单个值的查询,使用 ExecuteScalar 方法执行命令,并返回查询结果的第一行第一列的值。

object result = command.ExecuteScalar();

在执行命令之后,您可以根据具体情况处理查询结果、受影响的行数或返回的单个值。

请注意,使用 SqlCommand 执行 SQL 命令之前,需要确保已经打开了与数据库的连接。可以使用 SqlConnection 的 Open 方法打开连接。

以下是一个简单的示例,演示了 SqlCommand 的用法:

string connectionString = "your_connection_string";

string sqlQuery = "SELECT * FROM Customers";

using (SqlConnection connection = new SqlConnection(connectionString)) {

connection.Open();

SqlCommand command = new SqlCommand(sqlQuery, connection);

SqlDataReader reader = command.ExecuteReader();

while (reader.Read())

{ // 处理查询结果 } reader.Close(); }

在上述示例中,我们创建了一个 SqlCommand 对象,并使用 ExecuteReader 方法执行 SELECT 查询,并通过 SqlDataReader 对象读取查询结果。

通过使用 SqlCommand,您可以在 ADO.NET 应用程序中执行各种 SQL 命令,处理查询结果或执行数据的插入、更新和删除操作。

你可能感兴趣的:(数据库,开发语言,c#,.net)