Ваш запрос выбирает одно значение. Используйте ExecuteScalar и приведите его к DateTime (это уже DateTime, но внутри object
):
string time = "Select top(1) DATE from SERVICE order by DATE desc";
SqlCommand command = new SqlCommand(time, connection);
connection.Open();
DateTime d = (DateTime)command.ExecuteScalar();
connection.Close();
После того, как вы это сделаете, и перед тем, как приступить к долгой миссии этого затянувшегося способаполучение данных из базы данных, преобразование их в объекты для использования в вашем приложении и т. д., взгляните хотя бы на ORM под названием Dapper, если не на Entity Framework. Dapper в основном то, что вы делаете сейчас, но он автоматически конвертирует ваши запросы в объекты и обратно и сохраняет много утомительного кода. С Dapper это выглядело бы как:
using (var connection = new SqlConnection("connstr"))
{
var d = connection.QuerySingle<DateTime>("SELECT TOP 1 Date FROM ...");
}
Да, это не так уж и много, как сейчас, верно? Но что, если у вас есть список Order, который сам по себе имеет 20 свойств:
using (var connection = new SqlConnection("connstr"))
{
var orders = connection.Query<Order>("SELECT * FROM order WHERE customerID = @custid", new {custid = 123}).ToList();
}
Orders теперь представляет собой список объектов Order для клиента 123, параметризованный, безопасный для инъекций, быстрый и однострочный для чтения и заполненияваши заказы;для этого в устройстве чтения данных потребуется как минимум 25 строк скучного кода
http://dapper -tutorial.net и потратить 2 минуты на чтение;Я сделаю ставки, вы будете рады, что вы сделали