1

我有一个 asp.net mvc 应用程序,其中有这个功能:

public List<FichierModels> GetFichiersFromDirectoy(int _id_dir)
{
    List<FichierModels> l = new List<FichierModels>();
    Data.Connect();
    using (Data.connexion)
    {
        string queryString = @"select Id, Id_directory, Url, Upload_date, Last_download, Downloads_count, Taille, Expiration_date, Name from Fichier where Id_directory = @Id_directory ";
        SqlCommand command = new SqlCommand(queryString, Data.connexion);
        command.Parameters.AddWithValue("@Id_directory", _id_dir);
        try
        {
            SqlDataReader reader = command.ExecuteReader();
            do
            {

                while (reader.Read())
                {
                    FichierModels fichier = new FichierModels();
                    fichier.Id = reader.GetInt32(0); 
                        fichier.Id_directory = reader.GetInt32(1);
                        fichier.Url = reader.GetString(2); 
                        fichier.Upload_date = reader.GetDateTime(3); 
                        fichier.Last_download = reader.GetDateTime(4);
                        fichier.Downloads_count = reader.GetInt32(5); 
                        fichier.Taille = reader.GetFloat(6); 
                        fichier.Expiration_date = reader.GetDateTime(7);
                        fichier.Name = reader.GetString(8) ;
                    l.Add(fichier);

                }
            } while (reader.NextResult());

            return l;

        }
        catch { return null; }

    }
}

图式 问题是在行中转换的异常fichier.Taille = reader.GetFloat(6);但是属性taille是浮动的并且在类中Fichier也是。但总是错误转换的异常。 记录 为什么会发生这种情况?我该如何解决?

4

2 回答 2

2

MSSQL 浮点数在 C# 中应该是双精度数。MSSQL 中浮点的默认精度是双精度(当列定义为浮点时,它实际上是一个float(53)),而 C# 中的浮点始终具有单精度。

于 2013-05-28T15:16:24.177 回答
1

Sql server 中的 float 类型是 C# 中的 Double 类型 http://msdn.microsoft.com/en-us/library/cc716729.aspx

于 2013-05-28T15:17:08.007 回答