2015-06-06 2 views
0

Я возвращаю сумму всех платежей за обучение из базы данных, где она равна введенному номеру приема. Тип данных для столбцов в SQL SERVER является десятичным (10,2). Когда я хочу преобразовать в double, он показывает ошибку «Указанный приказ недействителен». Как конвертировать в double?Указанное приведение недействительно при преобразовании из десятичной (10,2) в double

SqlConnection con6 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
        con6.Open(); 
        string query = "SELECT sum(tutionfee) FROM fees where admno='"+admissionnumber.Text+"'"; 
        SqlCommand comSelect = new SqlCommand(query, con6); 
        double ID = (double)comSelect.ExecuteScalar(); 
+0

FWIW, держать денежные суммы (как ваш общей стоимости обучения) в качестве десятичного в коде C# тоже. Сохранение десятичных значений как double имеет [побочные эффекты] (http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-should-i-use-and-when). –

+0

Кроме того, обязательно [параметризовать свой запрос] (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters (v = vs.110) .aspx) предупреждение. –

ответ

1

Необходимо на самом деле преобразовать значение в C#. double и decimal - два разных типа в C#. Первый - это встроенный тип, а последний - это просто структура, которая реализована в основном в C#. Поскольку они не то же самое, вы не можете просто бросить их. Самый простой способ, в данном случае является использование Convert класс:

Convert.ToDouble((decimal)comSelect.ExecuteScalar()); 
+2

Он должен иметь возможность просто: '(double) (decimal) comSelect.ExecuteScalar();' Это состоит из операции unboxing и cast. Он попытался объединить их в одну операцию, которая не является законной. –

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