1

我正在做一个货币转换项目,现在我已经构建了一个小脚本来从我的数据库中提取转换率和描述,但我似乎无法找到将变量 (Rate) 拉出的方法数据读取器创建的字符串。

这是代码片段:

            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();
            }

现在我想要 Rate 变量,它是一个小数,而不必转换它或将它推到适配器中(我是 C# 的新手)。

tl;博士我只想要“Rate:{0}”的输出,所以我可以用它来转换货币。

有任何想法吗?

4

2 回答 2

1

DataReader 不会创建字符串。

你可以打电话reader.GetDecimal(0)

于 2013-06-12T14:21:30.230 回答
1

你有没有尝试过

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

编辑:哇,我不敢相信我忘记了这不是 SqlDataReader 的一部分:p,我只是在看我的实现......代码:

扩大:

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);
}

很抱歉造成混乱:)

于 2013-06-12T14:27:09.130 回答