当前位置: 首页 > 面试题库 >

如何使用SqlDataReader获取浮点值?

封弘伟
2023-03-14
问题内容

在我的数据库中,我具有NextStatDistanceTime值作为浮点数。执行“ float time = reader.GetFloat(0);”行时,出现错误

系统无效的强制转换异常

如何在此代码中从sql命令获取浮点值?

这是我的代码:

using (SqlConnection conn = new SqlConnection(@"<myconnectionstring>"))
{
    float totaltime = 0;
    for (int i = startStationIndex; i < endStationIndex; i++)
    {
        SqlCommand command = new SqlCommand("SELECT NextStatDistanceTime FROM [MetroDatabase].[dbo].[MetroStation] WHERE StationIndex = " + i + "", conn);
        try
        {
            conn.Open();
            command.ExecuteNonQuery();
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    float time = reader.GetFloat(0);
                    totaltime = totaltime + time;
                    conn.Close();
                }
            }                        
        }
        catch (Exception ex)
        {
            result = ex.Message;
            Console.WriteLine(ex.Message);
        }
    }

}

问题答案:

我想是时候放一张桌子了。

T-SQL类型名称 相当于.NET C#类型名称 `DataReader` 方法
`FLOAT` `System.Double` `double` `IDataReader.GetDouble()`
`REAL` `System.Single` `float` `IDataReader.GetFloat() `

请注意,GetFloat名称有误-应该为GetSingle,因为float它是C#特定的名称。例如,在VB.NET中没有任何意义。

因此,如果您的数据库列属于类型FLOAT,请使用GetDouble而不是进行读取GetFloat数据读取器方法
执行转换;有一种通用的GetValue方法来获取的值,object然后您可以将其进一步转换。

顺便说一句,这不是唯一的精妙之处-.NET浮点类型支持非规范化值,而T-
SQL类型不支持,因此,您的.NET代码中可能会有无法将浮点数包含在内的情况。成功地存储在数据库中,即使类型匹配。



 类似资料:
  • 我在学习如何使用java 8流时,发现了一些奇怪的事情。 <代码>数组。stream()具有除浮点数组之外的所有方法: <代码>数组。流(int[]):int流 同样,有int、双精度等的Stream实现,但没有浮点数: 有什么原因吗? 使用浮动流的推荐方法是什么?

  • 问题内容: 我有一个像 从上面的字符串中,我需要获取一个值。 当我使用替换所有功能。 当字符串有两个点时,这将不起作用。 浮点值的位置可能有所不同。 问题答案: 首先丢弃所有非float字符,然后像这样隐秘给Float:

  • 我有像0.152545这样的浮点值,我只想要0.1f。< br >这怎么可能..< br >通过使用String,我获得了字符串值。下面的代码显示了结果。 这给了我字符串值,如0.1f,但我只想要浮点值,如0.1f。

  • 我正在使用简单的查询从数据库中检索用户信息。 然后,我尝试获取一个名为isconfired的列(在数据库中表示为位类型列)的值,并将其转换为bool。 然后我得到一个FormatException错误,指出“输入字符串的格式不正确”。 我看到了一个类似的问题,其答案提供了以下代码: 但这不适用于我的案例,因为我不知道isconfired列的索引,也不想知道它。我想使用列名。

  • 我正在寻找Java的的Python等价物。 我找到了这个python:获取和操纵(作为整数)浮点的位模式,但是有没有人知道一种不那么复杂的方法呢?

  • 问题内容: 我有一个类似的网址: 如何使用jQuery 获取锚点值并将其存储为变量? 问题答案: 您可以使用和,如下所示: 如果其中可能没有,请执行以下检查: 如果这是 当前 页面的URL,则可以使用它来获取它,并根据需要替换。