Хранение переменной 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();
Другие вопросы по тегам