在C#中,SqlDataReader 用于从数据库高效地读取只进、只读的数据流。它适用于需要快速访问大量数据的场景,比如逐行读取查询结果。
基本使用步骤
使用 SqlDataReader 的典型流程包括:建立连接、执行命令、读取数据、关闭资源。注意必须保持连接打开直到读取完成。
使用 SqlConnection 建立数据库连接 通过 SqlCommand 执行 SELECT 查询 调用 ExecuteReader() 获取 SqlDataReader 对象 用 Read() 方法逐行读取数据 使用索引或列名获取字段值 正确释放资源(推荐使用 using 语句)完整示例代码
以下是一个使用 SqlDataReader 读取用户表数据的示例:
using System;
using System.Data;
using Microsoft.Data.SqlClient; // .NET 6+ 使用 Microsoft.Data.SqlClient
class Program
{
static void Main()
{
string connectionString = "Server=localhost;Database=TestDB;User Id=sa;Password=your_password;";
string query = "SELECT Id, Name, Email FROM Users";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, connection);
try
{
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int id = reader.GetInt32("Id");
string name = reader["Name"].ToString();
string email = reader["Email"] as string;
Console.WriteLine($"ID: {id}, Name: {name}, Email: {email}");
}
reader.Close(); // 关闭读取器
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
} // 连接自动关闭
}
}注意事项与最佳实践
使用 SqlDataReader 时应注意以下几点以避免常见问题:
确保连接字符串正确,并且数据库服务正在运行 Always use using 语句确保连接和读取器被正确释放 调用 Read() 方法前进到下一行,返回 false 表示已到末尾 可通过列名或序号访问数据,如 reader["Name"] 或 reader[1] 根据数据类型选择合适的 Get 方法(GetInt32, GetString, GetDateTime 等)更高效且安全 不要在关闭连接后尝试读取数据基本上就这些。SqlDataReader 轻量高效,适合读取大量数据的场景,但需注意及时释放资源。
