五、C#与数据库交互( ADO.NET基础)

在C#中与数据库进行交互,通常使用ADO.NET(ActiveX Data Objects .NET)框架。ADO.NET是.NET Framework中用于数据访问的一组类库,它提供了多种用于连接和操作数据库的方法。

以下是使用ADO.NET与数据库交互的一些基本步骤:

1. 引入命名空间

在C#程序中,你需要引入 System.Data.SqlClient 命名空间,以便使用ADO.NET来操作SQL Server数据库。

using System.Data.SqlClient;

2. 建立数据库连接

使用 SqlConnection 类来建立与数据库的连接。你需要提供连接字符串,该字符串包含了用于连接到数据库所需的所有信息,如服务器名称、数据库名称、用户名和密码等。

string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // 这里执行数据库操作
}

3. 执行SQL命令

使用 SqlCommand 类来执行SQL命令。你可以设置命令文本,并使用 SqlConnectionExecuteNonQuery 方法来执行命令。

string commandText = "INSERT INTO MyTable (Column1, Column2) VALUES (@Value1, @Value2)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand(commandText, connection))
    {
        command.Parameters.AddWithValue("@Value1", "Value1");
        command.Parameters.AddWithValue("@Value2", "Value2");
        command.ExecuteNonQuery();
    }
}

4. 读取数据(使用 SqlDataReader

使用 SqlCommandExecuteReader 方法可以执行查询并返回一个 SqlDataReader 对象,该对象可以用来读取查询结果。

string query = "SELECT * FROM MyTable";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand(query, connection))
    {
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
            }
        }
    }
}

5. 关闭和释放资源(使用 using 语句)

使用 using 语句可以确保资源(如数据库连接和命令)在使用完毕后被正确关闭和释放。这有助于避免资源泄漏。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    // ... 数据库操作 ...
} // connection 自动关闭和释放资源

6. 异常处理(可选)

在实际应用中,建议添加异常处理逻辑来捕获和处理可能发生的错误,确保程序的健壮性。可以使用 try-catch 语句块来处理异常。

7. 事务处理(可选)

如果需要确保一组数据库操作要么全部成功,要么全部失败,可以使用事务(Transaction)来管理这些操作。通过使用事务,可以确保数据的完整性和一致性。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    SqlTransaction transaction = connection.BeginTransaction();
    try
    {
        using (SqlCommand command = new SqlCommand(commandText, connection, transaction))
        {
            command.Parameters.AddWithValue("@Value1", "Value1");
            command.Parameters.AddWithValue("@Value2", "Value2");
            command.ExecuteNonQuery();
            transaction.Commit();
        }
    }
    catch (Exception ex)
    {
        // 发生异常,回滚事务
        transaction.Rollback();
        // 处理异常
    }
}

8. 参数化查询(可选)

为了避免SQL注入攻击,建议使用参数化查询。参数化查询不仅可以提高安全性,还可以提高性能并减少错误。

string commandText = "INSERT INTO MyTable (Column1, Column2) VALUES (@Value1, @Value2)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand(commandText, connection))
    {
        command.Parameters.AddWithValue("@Value1", "Value1"); // 参数化查询,避免SQL注入
        command.Parameters.AddWithValue("@Value2", "Value2");
        command.ExecuteNonQuery();
    }
}

通过遵循这些基本步骤和最佳实践,你可以在C#中安全、高效地与数据库进行交互。同时,根据具体的应用需求和场景,可能还需要考虑其他因素,如数据库连接池、ORM框架(如Entity Framework)等。

你可能感兴趣的:(数据库,c#,交互)