使用列名称从Sybase查询读取器加载一些数据

时间:2013-07-22 07:09:58

标签: c#-4.0 sybase-ase datareader

我正在使用一些Sybase查询阅读器但到目前为止无法使用列名而不是列号加载数据。你知道怎么样吗?以下是我现在想要改变的读者:

var queryReader = TheContext.ExecuteStoredProcedure("dbo.sp_getMyData");
try
{
    while (queryReader.Read())
    {
        if (queryReader.GetValue(0) == null) { continue; }
        int numDaysPending; int.TryParse(queryReader.GetValue(2).ToString(), out numDaysPending);
        ...
谢谢你!

1 个答案:

答案 0 :(得分:0)

我找到了答案,只需要生成一些包含列映射的字典[columnName; columnId]:

public Dictionary<String, int> GetColumnsMap(AseDataReader reader)
{
    var columnCount = reader.FieldCount;
    Dictionary<String, int> columnsMap = new Dictionary<String, int>();
    for (int columnId = 0; columnId < columnCount; columnId++)
    {
        var columnName = reader.GetName(columnId);
        if (!columnsMap.ContainsKey(columnName))
        {
            columnsMap.Add(columnName, columnId);
        }
    }
    return columnsMap;
}

用法:

brand = columnsMap["Brands"]