2013-06-18 4 views
0

Я пытаюсь проанализировать восстановленное значение из базы данных на double, long или integer, но оно выдает исключение FormatException. Мне нужна ваша помощь.Строка ввода не в правильном формате (формат Exception не обрабатывается)

В этом коде я пытаюсь получить часы из базы данных и суммировать их для расчета общего количества часов ввода в базу данных.

String hrs; 
Double resultHrs=0; 

while (oleDbDataReader1.Read()) 
{ 
    hrs = oleDbDataReader1["Hours"].ToString(); 
    double HRS = double.Parse(oleDbDataReader1["Hours"].ToString()); 
    resultHrs = resultHrs + HRS; 
}// end while 

ответ

2

Не выполнять преобразование строки в первую очередь:

double hours = (double) oleDbDataReader1["Hours"]; 

Если ваше значение не фактически строки в базе данных (в этом случае вы должны исправить это) нет никаких оснований для его преобразования в строка. (Если это не тип отображается в double, вы должны изменить то, что вы бросили его, конечно.)

EDIT: Если это нечисловая в базе данных, то вы, вероятно, сделать необходимость использования double.Parse - но вы можете указать культуру. Например, если предположить, что они все в форме «10,2», а не «10,2» (как некоторые культуры использовали бы) вы хотели бы что-то вроде:

double hours = double.Parse((string) oleDbDataReader1["Hours"], 
          CultureInfo.InvariantCulture); 
+0

ну, это простой текст в базе данных доступа .... –

+0

@AbeerIslam: Почему это текст вообще, если он всегда предназначен для хранения номера? –

+0

Мне все равно пришлось набросить его, введя значение в базу данных, которая была моей причиной для этого, но я все равно изменил ее –

1

Я использую:

HRS = oledbDataReader1.GetDouble(iColumn); 

где iColumn - индекс столбца в запросе

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