.net如何连接数据库
时间: 2025-06-04 22:33:11 AIGC 浏览: 11
### .NET 连接数据库教程
在 .NET 平台中,可以通过多种方式连接数据库并执行增删改查操作。以下是基于 ADO.NET 和 iBatis.Net 的两种常见方法。
#### 方法一:使用 ADO.NET 连接 SQL Server 数据库
ADO.NET 是一种用于访问数据源的核心技术,提供了丰富的功能来处理关系型数据库和其他数据存储。下面是一个完整的例子,展示如何通过 ADO.NET 来连接 SQL Server 数据库并执行查询:
1. **创建 Connection 对象**
使用 `SqlConnection` 类建立与数据库的连接。需要提供一个有效的连接字符串。
```csharp
private string connString = "Server=TSSIS001;Database=MISDB;User Id=sa;Password=153153;";
```
2. **打开和关闭连接**
打开连接后可以验证其状态是否为 `Open`,完成操作后再将其关闭以释放资源[^3]。
```csharp
using (SqlConnection connection = new SqlConnection(connString))
{
try
{
connection.Open();
if (connection.State == System.Data.ConnectionState.Open)
Console.WriteLine("成功连接");
// 关闭连接
connection.Close();
if (connection.State == System.Data.ConnectionState.Closed)
Console.WriteLine("成功关闭");
}
catch (Exception ex)
{
Console.WriteLine($"发生错误: {ex.Message}");
}
}
```
3. **执行查询**
利用 `SqlCommand` 可以发送命令至服务器,并返回结果集或影响行数。
```csharp
public DataTable ExecuteQuery(string query)
{
DataTable dataTable = new DataTable();
using (SqlConnection connection = new SqlConnection(connString))
{
SqlCommand command = new SqlCommand(query, connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
connection.Open();
adapter.Fill(dataTable);
}
return dataTable;
}
```
#### 方法二:使用 iBatis.Net 进行数据库操作
iBatis.Net 是另一种流行的 ORM 工具,它允许开发人员手动编写 SQL 脚本来保持灵活性的同时简化对象持久化的复杂度。
1. **基本配置**
配置 XML 文件指定映射规则以及参数设置。例如,在 `SqlMap.config` 中定义 `<sqlMap>` 元素指向具体的 Mapper 文件位置[^1]。
```xml
<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<settings useStatementNamespaces="true"/>
<sqlMaps>
<add resource="YourNamespace.YourMapper.xml"/>
</sqlMaps>
</sqlMapConfig>
```
2. **编写 Mapper 文件**
创建对应的 Mapper 文件描述表结构及其关联的对象类。
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Users">
<!-- 定义 SELECT -->
<select id="GetAllUsers" resultClass="System.String">
SELECT UserName FROM Users
</select>
<!-- 插入新记录 -->
<insert id="InsertUser" parameterClass="string">
INSERT INTO Users(UserName) VALUES (#value#)
</insert>
</sqlMap>
```
3. **加载 SqlMap 并执行 CRUD 操作**
```csharp
ISqlMapper mapper = null;
try
{
DomSqlMapBuilder builder = new DomSqlMapBuilder();
mapper = builder.Configure(@"path\to\your\SqlMap.config");
// 查询所有用户名称
IList<string> users = mapper.QueryForList<string>("Users.GetAllUsers", null);
foreach (var user in users)
Console.WriteLine(user);
// 添加新的用户
object insertedId = mapper.Insert("Users.InsertUser", "NewUserName");
}
finally
{
if(mapper != null && !mapper.IsClosed)
mapper.Dispose();
}
```
---
#### 总结
无论是采用低级别的 ADO.NET API 或者更高层次抽象的 iBatis.Net,都可以满足不同场景下的需求。前者适合那些希望完全掌控 SQL 构造过程的应用程序;后者则更适合追求快速开发周期且愿意接受一定学习成本的情况。
阅读全文
相关推荐















