Я знаю, что это распространенная ошибка, но мне нужно объяснить, как лучше всего выйти из этого.
У меня есть средство выбора даты, используемое для хранения даты рождения.
Выбор даты
<script>
$(document).ready(function () {
$(".datepicker").datepicker({
dateFormat: "yy-mm-dd",
changeMonth: true,
changeYear: true,
yearRange: "-100:-1",
defaultDate: "-25y"
});
});
</script>
Я передаю его как параметр для хранения в базе данных, как показано ниже:
cmd.Parameters.Add("@DOB", SqlDbType.Date).Value = txtdob.Value;
работает просто отлично. Теперь на странице редактирования я вставляю DOB из базы данных в средство выбора даты, как показано ниже:
txtdob.Value = ((DateTime)rdr["DOB"]).ToString("dd-MM-yyyy");
все еще работает нормально. Я вижу DOB, как и ожидалось. Теперь я просто меняю что-то еще (например, имя или город пользователя) и нажимаю кнопку «Обновить» с DOB, переданным как:
cmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value = txtdob.Value;
и я получаю ошибку
Не удалось преобразовать значение параметра из строки в DateTime.
txtdob.Value
либо с помощьюConvert.ToDateTime()
, либо с помощьюDateTime.ParseExact()
и вместо использованияcmd.Parameters.Add()
(устаревшее) используйтеcmd.Parameters.AddwithValue()
(рекомендуется). - person Suprabhat Biswal   schedule 07.10.2015