Хранение переменной DateTime в локальной переменной C#
Я считаю, что мой вопрос может показаться дилетантским, но моя цель - DateTime
данные из моей базы данных и сохранить их в локальной переменной. Мой фрагмент кода был добавлен ниже:
string checkdu1 = "select Top 1 Date from CF";
SqlCommand cmdd = new SqlCommand(checkdu1, con);
SqlDataReader dru1 = cmdd.ExecuteReader();
DateTime d1 = Convert.ToDateTime("Date"); //error here
Имя базы данных CF и значение Date
столбец должен быть восстановлен. Но я получаю
исключение типа "System.FormatException" произошло в mscorlib.dll, но не было обработано в коде пользователя
Дополнительная информация: Строка не была распознана как допустимый DateTime. Есть неизвестное слово, начинающееся с индекса 0.
Тип данных Date
в базе данных есть DateTime
,
Я не могу найти правильный ответ, и ваша помощь будет оценена.
4 ответа
Вы пытаетесь преобразовать слово "Дата" в дату, которая не сработает.
Попробуйте что-то вроде
DateTime d1 = dru1.GetDateTime(dru1.GetOrdinal("Date"));
Во-первых, вы не используете dru1
для всего.
Посмотрите здесь, как использовать читатель SqlDataReader Class
Во-вторых, поскольку ваше поле даты имеет тип данных DateTime, нет смысла преобразовывать его; это свидание.
Я думаю, что это должно работать DateTime dt = Convert.ToDateTime(dru1["Date"]);
У вас есть два варианта на основе вашего примера кода:
1 Использование DataReader
string checkdu1 = "select Top 1 Date from CF";
SqlCommand cmdd = new SqlCommand(checkdu1, con);
SqlDataReader dru1 = cmdd.ExecuteReader();
DateTime d1;
if(dru1.Read()) d1 = dru1.GetDateTime(0);
2 Использование ExecuteScalar
string checkdu1 = "select Top 1 Date from CF";
SqlCommand cmdd = new SqlCommand(checkdu1, con);
DateTime d1 = (DateTime) cmdd.ExecuteScalar();