使用索引来获取列值
最简单的方式是通过列的索引来访问数据。每个查询返回的结果集中的列都有一个对应的索引,从 0 开始递增。例如,如果你知道某列是结果集中的第二列(索引为 1),可以直接通过索引来获取它的值。
```csharp
using (var connection = new SqlConnection("your-connection-string"))
{
connection.Open();
using (var command = new SqlCommand("SELECT Column1, Column2 FROM YourTable", connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
// 获取索引为1的列值
string columnValue = reader.GetString(1);
Console.WriteLine(columnValue);
}
}
}
}
```
使用列名获取值
如果列名已知,并且你希望代码更具可读性,可以使用 `GetName` 方法结合 `GetOrdinal` 来通过列名获取索引,然后访问该列的值。
```csharp
using (var connection = new SqlConnection("your-connection-string"))
{
connection.Open();
using (var command = new SqlCommand("SELECT Column1, Column2 FROM YourTable", connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
// 获取列名为 "Column2" 的索引
int index = reader.GetOrdinal("Column2");
string columnValue = reader.IsDBNull(index) ? "NULL" : reader.GetString(index);
Console.WriteLine(columnValue);
}
}
}
}
```
注意事项
1. 检查列是否存在:在使用列名之前,最好先确认该列确实存在于查询结果集中,以避免运行时错误。
2. 处理空值:使用 `IsDBNull` 方法检查列是否包含 NULL 值,以便正确处理。
3. 资源管理:确保所有数据库连接和命令对象都妥善关闭,以释放资源。
通过以上方法,你可以轻松地从 `SqlDataReader` 中获取某一列的值。这种方式不仅高效,而且灵活,适合各种复杂的数据库操作场景。