DataRow.Field <t>(float Column)抛出无效的强制转换异常

时间:2016-09-21 12:03:31

标签: c# sql-server

IDE Visual Studio 2015
** NET&#34;&#34; 4.5
平台WinForms

我有一个包含列[UsedSize] FLOAT的数据库表。查询此表并将值存储在局部变量中时,我得到一个无效的强制转换异常;示例代码:

SqlDataAdapter sda = new SqlDataAdapter(cmdText, conn);
DataTable dt = new DataTable();
sda.Fill(dt);

foreach (DataRow row in dt.Rows)
{
    InfoLibrary ir = new InfoLibrary();
    ir.LibraryID = row.Field<int>("LibraryID");
    ir.Name = row.Field<string>("Name");
    ir.UsedSize = row.Field<float>("UsedSize");
    ir.TotalSize = row.Field<float>("TotalSize");
    ir.TotalFileCount = row.Field<int>("TotalFileCount");                   
    ilList.Add(ir);
}

当踏上执行并执行&#34;快速观察&#34;在错误的行上我发现,通过将行更改为row.Field(&#34; TotalSize&#34;),单元格值类型为零。在表定义中,这显然是float

,为什么会发生这种情况

1 个答案:

答案 0 :(得分:2)

SQL Server float应映射到.Net Double请参阅here