Получение коллекций из базы данных SQL [закрыт]

117
10 января 2021, 01:50
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 1 год назад.

Улучшить вопрос

Мне нужно получить в коллекцию данные из базы данных Мне нужно наполнить ее данными из MS SQL Server Код коллекции.

    class CityBD
{
    public string Title { get; set; }
    public string Company { get; set; }
    public string price { get; set; }
    public int Square { get; set; }
    public static CityBD[] GetCityBDs()
    {
        var result = new CityBD[]
        {
            new CityBD() { Title = "Москва", Company = "Россия", price = "абвг", Square = 1 },
            new CityBD() { Title = "Вашингтон", Company = "США", price = "абвг", Square = 2 }
        };
        return result;


    }
}

}

Мне нужно сделать так, чтобы данные брались с SQL сервера. Код SQL

 USE [mobiledb]
 GO
 /** Object:  StoredProcedure [dbo].[sp_InsertPhone]    Script Date: 20.05.2019 22:02:06 **/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_InsertPhone]
    @title nvarchar(50),
    @company nvarchar(50),
    @price int,
    @Square int,
    @Date date,
    @Id int out
AS
    INSERT INTO Phones (Title, Company, Price,Square,Date)
    VALUES (@title, @company, @price,@Square,@Date)
   SET @Id=SCOPE_IDENTITY()
Answer 1

Использовать для загрузки из БД статический метод в самом классе модели -- идея не из лучших, для этого стоит создать отдельный класс, примерно такой:

public class PhonesLoader
{
    private const string SelectAllQuery = @"SELECT Title, Company, Price, Square FROM Phones";
    private readonly string _connectionString;

    public PhonesLoader(string connectionString)
    {
        if (string.IsNullOrWhiteSpace(connectionString))
            throw new ArgumentNullException(nameof(connectionString));
        _connectionString = connectionString;
    }

    public CityBD[] GetAll()
    {
        var result = new List<CityBD>();
        using (var connection = new SqlConnection(_connectionString))
        using (var command = connection.CreateCommand())
        {
            command.Type = CommandType.Text;
            command.CommandText = SelectAllQuery;
            using (var reader = command.ExecuteReader())
            {
                var titleColumnName = reader.GetOrdinal(nameof(CityBD.Title));
                var companyColumnName = reader.GetOrdinal(nameof(CityBD.Company));
                var priceColumnName = reader.GetOrdinal(nameof(CityBD.Price));
                var squareColumnName = reader.GetOrdinal(nameof(CityBD.Square));
                while (reader.Read())
                {
                    var record = new CityBD();
                    record.Title = reader.GetString(titleColumnName);
                    record.Company = reader.GetString(companyColumnName);
                    record.Price = reader.GetString(priceColumnName);
                    record.Square = reader.GetInt32(squareColumnName);
                    result.Add(record);
                }
            }
        }
        return result.ToArray();
    }
}

Безусловно, код очень упрощен, но, надеюсь, поможет Вам понять, куда двигаться дальше. Скорее всего в Вашу модель CityBD надо еще добавить Id.

READ ALSO
Как заполнить radiobutton массивом C# Windows Form

Как заполнить radiobutton массивом C# Windows Form

Есть несколько radioButton пример, (заполнены для примера, нужно случайными через цикл)

101
C# Когда оправдан захват внешних переменных в анонимных методах?

C# Когда оправдан захват внешних переменных в анонимных методах?

В C# предусмотрен механизм захвата внешних переменных в анонимных методахПриведу пример кода:

129
Окрасить ячейки datagrid wpf

Окрасить ячейки datagrid wpf

имеется вот такая таблица Datagrid

136
Как не хардкодить пароли и учётки в коде?

Как не хардкодить пароли и учётки в коде?

Как не хардкодить учетные записи? Какие есть варианты решения данной проблемы?

109