五、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)等。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈嗨哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值