在 C# 程序的编写过程中,常常需要把一些重要的数据存储起来,这时我们就会联想到一些数据库,如微软公司提供的SQL Server数据库、Access数据库和Oracle公司提供的Oracle数据库等。虽然在 C# 访问这些数据库时引入的命名空间不同(如访问SQL Server数据库引入的命名空间为System.Data.SqlClient而访问Access数据库引入的命名空间为System.Data.OleDb),但Visual C#访问这些数据库的技术基本相同。这种数据库访问技术就叫做ADO.NET
在C#编程中,访问数据库是一项常见的任务,用于存储和管理程序中的重要数据。本文将详细介绍如何使用ADO.NET,一种由Microsoft开发的数据库访问技术,来实现C#对数据库的连接和操作。ADO.NET提供了丰富的对象模型,使得开发者能够灵活地处理各种类型的数据库,如SQL Server、Access和Oracle。
ADO.NET的对象模型主要包括以下几个关键组件:
1. **Connection对象**:这是与数据源建立连接的桥梁。在C#中,访问SQL Server数据库时会使用`System.Data.SqlClient`命名空间中的SqlConnection类,而访问Access数据库则会使用`System.Data.OleDb`命名空间中的OleDbConnection类。例如,建立与Access数据库的连接可以通过创建一个OleDbConnection对象并设置连接字符串来完成:
```csharp
string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=my.mdb";
OleDbConnection conn = new OleDbConnection(strConnection);
```
2. **Command对象**:这个对象用于执行SQL命令。你可以创建一个OleDbCommand对象,设置其CommandText属性为SQL语句,然后将其与Connection对象关联,以执行特定的数据库操作,如插入、更新或删除数据。
3. **DataReader对象**:它提供了一个高效的向前只读的方式,用于从数据库中检索数据流。通常用于一次性读取大量数据,而不存储在内存中。
4. **DataSet对象**:这是一个内存中的数据集合,可以包含多个DataTable,即使在没有与数据库连接的情况下也能操作数据。它是断开式数据访问的核心,允许离线操作和数据的验证。
5. **DataAdapter对象**:作为DataSet和数据库之间的桥梁,用于填充DataSet并更新数据库。它使用Command对象来执行SQL命令,将数据加载到DataSet中,或者将DataSet中的更改同步回数据库。
以C#访问Access数据库为例,以下是如何创建一个插入数据的完整流程:
1. 引入必要的命名空间`System.Data.OleDb`。
2. 创建一个OleDbConnection对象,设置连接字符串,连接到数据库。
3. 创建一个OleDbCommand对象,设置其CommandText为插入数据的SQL语句,并将其与连接对象关联。
4. 打开数据库连接。
5. 执行OleDbCommand对象的ExecuteNonQuery()方法,这会执行SQL插入语句。
6. 完成操作后关闭数据库连接。
```csharp
// 创建并打开连接
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "insert into myTable(编号,姓名) values ('003','张三')";
cmd.Connection = conn;
// 打开连接
conn.Open();
// 执行插入命令
cmd.ExecuteNonQuery();
// 关闭连接
conn.Close();
```
通过以上步骤,你就成功地在数据库中插入了一条数据。对于更新和删除操作,只需修改Command对象的CommandText属性,使其对应SQL的UPDATE或DELETE语句,然后按照相同的流程执行即可。
ADO.NET为C#程序员提供了一个强大且灵活的框架,可以轻松地与各种数据库进行交互,无论是简单的CRUD操作还是复杂的事务处理,都能游刃有余。在实际项目中,还可以结合Entity Framework这样的ORM工具,进一步简化数据库访问的复杂性。