通过ADO.NET和ORM框架访问SQL Server数据库有哪些步骤?请分别举例进行说明。
时间: 2024-02-03 15:15:13 浏览: 38
访问 SQL Server 数据库一般可以通过 ADO.NET 或 ORM 框架来实现,下面分别介绍这两种方式的访问步骤:
## ADO.NET 访问 SQL Server 数据库的步骤
1.创建连接对象:使用 `SqlConnection` 类创建一个数据库连接对象。
```csharp
using System.Data.SqlClient;
SqlConnection connection = new SqlConnection(connectionString);
```
2.打开连接:使用 `Open()` 方法打开数据库连接。
```csharp
connection.Open();
```
3.执行 SQL 命令:使用 `SqlCommand` 类创建一个 SQL 命令对象,然后使用 `ExecuteNonQuery()`、`ExecuteScalar()` 或 `ExecuteReader()` 方法执行 SQL 命令。
```csharp
SqlCommand command = new SqlCommand(sql, connection);
command.ExecuteNonQuery(); // 执行 INSERT、UPDATE、DELETE 等非查询命令
command.ExecuteScalar(); // 执行返回单个值的查询命令
SqlDataReader reader = command.ExecuteReader(); // 执行返回多行结果的查询命令
```
4.关闭连接:使用 `Close()` 方法关闭数据库连接。
```csharp
connection.Close();
```
## ORM 框架访问 SQL Server 数据库的步骤
以 Entity Framework 为例,访问 SQL Server 数据库的步骤如下:
1.创建数据上下文对象:使用 `DbContext` 类创建一个数据上下文对象。
```csharp
using System.Data.Entity;
public class MyDbContext : DbContext
{
public MyDbContext(string connectionString) : base(connectionString)
{
}
public DbSet<Customer> Customers { get; set; }
}
```
2.配置数据库连接:在应用程序配置文件中配置数据库连接字符串。
```xml
<connectionStrings>
<add name="MyDbContext" connectionString="Data Source=myServer;Initial Catalog=myDatabase;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
```
3.执行数据库操作:使用数据上下文对象的方法执行数据库查询、插入、更新、删除等操作。
```csharp
using (var context = new MyDbContext("name=MyDbContext"))
{
// 查询
var customers = context.Customers.Where(c => c.Age > 18).ToList();
// 插入
context.Customers.Add(new Customer { Name = "Tom", Age = 20 });
context.SaveChanges();
// 更新
var customer = context.Customers.FirstOrDefault(c => c.Name == "Tom");
if (customer != null)
{
customer.Age = 22;
context.SaveChanges();
}
// 删除
var customerToDelete = context.Customers.FirstOrDefault(c => c.Name == "Tom");
if (customerToDelete != null)
{
context.Customers.Remove(customerToDelete);
context.SaveChanges();
}
}
```
总的来说,ADO.NET 操作比较底层,需要手动创建连接对象、命令对象等,但是可以更加灵活地控制 SQL 执行过程。ORM 框架则将数据库访问过程封装起来,提供了更加高级的查询语言和对象操作方式,但是可能会牺牲一些灵活性和性能。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)