@Taifunov

Как мне с IDataReader привести к int?

5d51801a9cd3d063492957.jpeg

Вот есть код, нужно в list считать кол-во лайков к конкретному посту

В итоге сейчас получаю вот такого вида лайки: 5d5180b62f83a434795708.jpeg
  • Вопрос задан
  • 148 просмотров
Решения вопроса 2
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
edward_freedom попытался вас переслать с примеру с МСДН (без ссылок правда, как оказалось и без собственного опыта)

вот ссылка на исходный пример
https://docs.microsoft.com/ru-ru/dotnet/api/system...

вы используете агрегирующую функцию (и не знаю на сколько правильно)
я почикал немного пример из МСДН и проставил пару акцентов
using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string str =
            @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=SSPI";
        ReadOrderData(str);
    }

    private static void ReadOrderData(string connectionString)
    {
        string queryString = "SELECT SUM(Freight) FROM dbo.Orders;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            // !1 ридер все таки должен выполнить считывание, даже если это одна строка
            reader.Read();
            // !2 запоршенное поле Freight имеет тип money, ближайший аналог decimal
            // и мы имеем дело со строками БД, в которых подразумеваются колонки, доже если это одна колонка
            var s = (decimal)reader[0];

            Console.WriteLine(s);
            reader.Close();
        }
    }
}


ps сорцы баз, часто используемых в примерах МСДН https://github.com/microsoft/sql-server-samples

pps по мне так Entity Framework комфортнее ))

ppps коллега eRKa тоже скуп на пояснения. но прав ))
https://docs.microsoft.com/ru-ru/dotnet/api/system...
версия 2
using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string str =
            @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=SSPI";
        ReadOrderData(str);
    }

    private static void ReadOrderData(string connectionString)
    {
        string queryString = "SELECT SUM(Freight) FROM dbo.Orders;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();

            var s = (decimal)command.ExecuteScalar();
            Console.WriteLine(s);
        }
    }
}


pppps
не смотря на раздраженность edward_freedom, код то рабочий

3sPM7gL.png
вот ссылка на сорцы https://www.sendspace.com/file/zbqr9q
Ответ написан
Комментировать
@kttotto
пофиг на чем писать
Во первых, у Вас неверный запрос, должно бытьSelect Count(*) From ...
Во вторых, агрегирующая функция (та, которая возвращает только одно значение, а не кортеж) читается другим методом, conn.ExecuteScalar(...);
Результат должен вернуть тип object, который Вы и приводите к int.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы