2013-06-12 1 views
1

Я работаю над проектом конвертации валют, теперь я построил небольшой скрипт, чтобы вывести коэффициенты и описания конверсий из моей базы данных, но я не могу найти способ вытащить переменную (Rate) out строки, созданной datareader.Как я могу извлечь определенную переменную из SqlDataReader?

Вот фрагмент кода:

  if (reader.HasRows) 
       //The reader will only read the rows if the ISO code matches the options avalible within the DB 
      { 
       Console.WriteLine("Result Found!"); 
       while (reader.Read()) 
       { 
        Console.WriteLine("Rate: {0}\t Conversion Rate: {1}", 
             reader[0], reader[1]); 
       } 
       reader.Close(); 
      } 

Теперь я хочу с переменной скоростью, которая десятичную без необходимости конвертировать его или засунуть его в адаптер (я новичок в C#).

tl; dr Я хочу, чтобы результат от «Rate: {0}» был один, поэтому я могу использовать его для конвертации валюты.

Любые идеи?

ответ

1

вы пробовали

reader.ReadField<type>("fieldname") ? 

EDIT: Ничего себе, я не могу поверить, что я забыл, что это не было частью SqlDataReader: р, я просто смотрю на моей реализации ... код для этого:

Расширение:

public static T ReadField<T>(this IDataReader reader, String fieldname) 
{ 
    return DB.ReaderField<T>(reader, fieldname); 
} 

DB.ReaderField:

public static T ReaderField<T>(IDataReader reader, String fieldname) 
{ 
    try 
    { 
     int idx = reader.GetOrdinal(fieldname); 
     if (reader.IsDBNull(idx)) 
     { 
      return (T)default(T); 
     } 
     else 
     { 
      object o = reader.GetValue(idx); 

      try 
      { 
       return (T)Convert.ChangeType(o, typeof(T)); 
      } 
      catch 
      { 
       return (T)default(T); 
      } 
     } 
    } 
    catch { } 

    return (T)default(T); 
} 

Извините за путаницу :)

+0

А? Это не стандартный метод [SqlDataReader] (http://msdn.microsoft.com/library/system.data.sqlclient.sqldatareader_methods.aspx), не так ли? Вы писали расширение для этого? – Corak

+0

Я так думал? –

+0

Возможно, он имел в виду [GetFieldValue ] (http://msdn.microsoft.com/library/hh485652.aspx). – Corak

1

DataReader не создает строку.

Вы можете позвонить по телефону reader.GetDecimal(0).

 Смежные вопросы

  • Нет связанных вопросов^_^