📜  从 SqlDataReader 获取 Db 列名称 - SQL (1)

📅  最后修改于: 2023-12-03 15:36:15.090000             🧑  作者: Mango

从 SqlDataReader 获取 Db 列名称 - SQL

在 .NET 中,使用 SqlDataReader 来读取数据库表中的数据是非常常见的。在获取数据时,有时需要获取列名称,以便能够使用正确的列名来引用数据。 以下是如何获取 SqlDataReader 的列名称。

1. 使用索引

可以使用 SqlDataReader 的 GetSchemaTable() 方法来获取当前结果集的完整 schema 信息,包括列名称和类型等。然后可以使用 DataRow.Field<T>() 方法来访问列名称。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    SqlCommand command = new SqlCommand("SELECT * FROM MyTable", connection);
    SqlDataReader reader = command.ExecuteReader();

    DataTable schemaTable = reader.GetSchemaTable();
    string columnName = schemaTable.Rows[0].Field<string>("ColumnName");
    
    // 使用 columnName 访问数据
}
2. 使用名称

可以使用 SqlDataReader 的 GetName() 方法来获取指定索引位置的列名称。以下是一个示例。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    SqlCommand command = new SqlCommand("SELECT * FROM MyTable", connection);
    SqlDataReader reader = command.ExecuteReader();

    string columnName = reader.GetName(0);
    
    // 使用 columnName 访问数据
}

注意,GetName() 方法的参数是列的索引位置,与 Ordinal 属性相同,因此可以使用 Ordinal 属性来获取具有给定名称的列的索引位置。

总结

以上是如何使用 SqlDataReader 获取列名称的方法。根据需求选择不同的方法来获取列名称,以方便访问数据。