2013-03-26 5 views
0

я получаю это исключение, когда я запускаю мой ASP Web AppC# Конверсия удалось при преобразовании даты/времени

Конверсия удалось при преобразовании даты и/или времени из строки символов. Когда я отлаживаю ошибку, я получаю ошибку в нижеприведенном фрагменте кода Все переменные по дате находятся в формате DATETIME.

for (int j = 0; j < mapdate.Count; j++) 
{ 
    string mapstartend = "Select Id,CDateTime from MAP1 where Product='" + pro[allpromap] + "' and ProgDate= '" + mapdate[j]+ "' and Channel='" + mapChannel[allmap] + "'"; 
    SqlCommand mapdat = new SqlCommand(mapstartend, conn); 
    SqlDataReader mapdatrdr = mapdat.ExecuteReader(); 
    while (mapdatrdr.Read()) 
    { 

     mapiddate.Add(mapdatrdr["Id"].ToString(), mapdatrdr.GetDateTime(1)); 
    } 
    mapdatrdr.Close(); 
} 
+9

Вы открыты для [** SQL-инъекции **] (HTTP: // msdn.microsoft.com/en-us/library/ms161953(v=sql.105).aspx), используйте ['sql-parameters'] (http://msdn.microsoft.com/en-us/library/system .data.sqlclient.sqlparameter.aspx)! Если 'mapdate' является' DateTime [] ', он также решит эту проблему. –

+1

Является ли 'CDateTime' когда-либо NULL? Это не похоже на то, что вы проверяете это. – Tejs

+0

можете ли вы вставить несколько значений выборки из списка mapdate? также каков тип mapdate? И что это за исполнительство? – Dhawalk

ответ

0

В каком формате указано поле даты?

Попытка использования:

Convert.ToDateTime(mapdatrdr["CDateTime"].ToString()); 
2

Если это проблема, то она должна работать с

DateTime.Parse()

Но это будет лучше, если вы используете TryParse() для проверки правильности строки.

см here для получения дополнительной информации, как использовать его

0

Попробуйте

mapdatrdr.GetDateTime(columnIndex).ToString("dd MMM yyyy"); 

Он должен работать

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