C#中常用的数据库操作技术及性能优化
发布时间: 2024-05-01 21:16:55 阅读量: 76 订阅数: 50
![数据库操作](https://img-blog.csdnimg.cn/20200301142203211.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h5bHlheWE=,size_16,color_FFFFFF,t_70)
# 2.1 数据查询和更新
### 2.1.1 查询语句的编写和执行
在 C# 中,可以使用 `SqlCommand` 对象来执行 SQL 查询语句。`SqlCommand` 对象包含了查询语句和连接到数据库的 `SqlConnection` 对象。以下代码示例演示了如何使用 `SqlCommand` 对象执行查询语句:
```csharp
using System.Data;
using System.Data.SqlClient;
public class QueryExample
{
public static void Main()
{
// 创建连接到数据库的 SqlConnection 对象
using (SqlConnection connection = new SqlConnection("Server=localhost;Database=AdventureWorks;User Id=sa;Password=password"))
{
// 打开数据库连接
connection.Open();
// 创建 SqlCommand 对象并指定查询语句
using (SqlCommand command = new SqlCommand("SELECT * FROM Person.Contact", connection))
{
// 执行查询并获取结果
using (SqlDataReader reader = command.ExecuteReader())
{
// 遍历查询结果
while (reader.Read())
{
Console.WriteLine($"{reader["FirstName"]} {reader["LastName"]}");
}
}
}
}
}
}
```
### 2.1.2 更新语句的编写和执行
除了查询语句之外,还可以使用 `SqlCommand` 对象来执行更新语句,例如 `INSERT`、`UPDATE` 和 `DELETE` 语句。以下代码示例演示了如何使用 `SqlCommand` 对象执行更新语句:
```csharp
using System.Data;
using System.Data.SqlClient;
public class UpdateExample
{
public static void Main()
{
// 创建连接到数据库的 SqlConnection 对象
using (SqlConnection connection = new SqlConnection("Server=localhost;Database=AdventureWorks;User Id=sa;Password=password"))
{
// 打开数据库连接
connection.Open();
// 创建 SqlCommand 对象并指定更新语句
using (SqlCommand command = new SqlCommand("UPDATE Person.Contact SET FirstName = 'John' WHERE ContactID = 1", connection))
{
// 执行更新语句
command.ExecuteNonQuery();
}
}
}
}
```
# 2. C#中常用的数据库操作技术
### 2.1 数据查询和更新
#### 2.1.1 查询语句的编写和执行
**查询语句的编写**
查询语句用于从数据库中检索数据,其基本语法如下:
```sql
SELECT [列名1, 列名2, ...]
FROM [表名]
[WHERE 条件表达式]
[ORDER BY 排序字段]
[LIMIT 行数]
```
其中:
* `SELECT` 子句指定要检索的列。
* `FROM` 子句指定要查询的表。
* `WHERE` 子句指定筛选数据的条件。
* `ORDER BY` 子句指定排序字段。
* `LIMIT` 子句指定要检索的行数。
**查询语句的执行**
可以使用以下代码执行查询语句:
```csharp
using System.Data;
using System.Data.SqlClient;
// 创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
// 创建命令对象
using (SqlCommand command = new SqlCommand(query, connection))
{
// 打开连接
connection.Open();
// 执行查询并获取结果
using (SqlDataReader reader = command.ExecuteReader())
{
// 遍历结果集
while (reader.Read())
{
// 获取列值
string name = reader.GetString(0);
int age = reader.GetInt32(1);
// 输出结果
Console.WriteLine($"{name} - {age}");
}
}
}
}
```
**参数说明:**
* `connectionString`:数据库连接字符串。
* `query`:查询语句。
### 2.1.2 更新语句的编写和执行
**更新语句的编写**
更新语句用于修改数据库中的数据,其基本语法如下:
```sql
UPDATE [表名]
SET [列名1] = [值1], [列名2] = [值2], ...
[WHERE 条件表达式]
```
其中:
* `UPDATE` 子句指定要更新的表。
* `SET` 子句指定要更新的列和值。
* `WHERE` 子句指定更新数据的条件。
**更新语句的执行**
可以使用以下代码执行更新语句:
```csharp
using System.Data;
using System.Data.SqlClient;
// 创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
// 创建命令对象
using (SqlCommand command = new SqlCommand(query, connection))
{
// 打开连接
connection.Open();
// 执行更新并获取受影响的行数
int rowsAffected = command.ExecuteNonQuery();
// 输出受影响的行数
Console.WriteLine($"{rowsAffected} row(s) affected");
}
}
```
**参数说明:**
* `connectionString`:数据库连接字符串。
* `query`:更新语句。
# 3.1 数据库设计优化
数据库设计是数据库性能优化的基石。一个合理的设计可以大大提高数据库的查询和更新效率。
### 3.1.1 表结构和索引的设计
表结构的设计直接影响数据库的查询和更新性能。合理的表结构可以减少数据冗余,提高数据查询效率。
* **主键和外键:**主键用于唯一标识表中的每一行数据,外键用于建立表之间的关系。合理的主键和外键设计可以提高数据查询和更新的效率。
* **索引:**索引是数据库中对表中一列或多列建立的特殊数据结构,可以加快对该列或多列数据的查询速度。合理地创建索引可
0
0