Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094

Создать объект по умолчанию

05.05.2020, 09:59. Показов 1411. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Дайте совет, как лучше сделать.
Вот есть у меня класс Product мне надо создать экземпляр этого класс с заполненными свойства, значения для свойств необходимо взять из базы данных.

НА ум приходит сделать статический метод, который и будет обращаться к базе данных и возвращать объект класса, но может есть способ лучше?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
 
        public decimal Price { get; set; }
 
        public static Product GetDefault()
        {
            //Берём данные из базы данных.
            return new Product();
        }
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2020, 09:59
Ответы с готовыми решениями:

При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не поддерживает это свойство или метод.'
При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не поддерживает это свойство или метод.'...

Создать объект стек и создать объект очередь с перегруженными операциями
Помогите, пожалуйста с заданиями. 1. Унарная операция Создать объект стек, перегрузив ++ и -- (как постфиксными, так и префиксными)....

Создать функцию с двумя аргументами, имеющими значение по умолчанию; вывести на экран значения по умолчанию
Доброго времени суток, помогите пожалуйста с задачей. -Создайте функцию с двумя аргументами, имеющими значение по умолчанию. Выведите...

4
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
05.05.2020, 10:06
Даже любопытно стало, как из БД вытащить целый объект
Для объекта по умолчанию есть конструктор
Для вытягивая данных из БД есть свои классы, типа SqlDataReader
А вопрос то в чем ?
0
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
05.05.2020, 11:09  [ТС]
Цитата Сообщение от Enifan Посмотреть сообщение
Даже любопытно стало, как из БД вытащить целый объект
Ни как.
Вы множите вытащить данные, а на стороне C# присвоить эти данные соответствующим свойства объекта.

Цитата Сообщение от Enifan Посмотреть сообщение
Для вытягивая данных из БД есть свои классы, типа SqlDataReader
Да, ими пользуюсь, а потом на стороне C# заполняю соответствующие свойства объекта полученными данными из БД.

Цитата Сообщение от Enifan Посмотреть сообщение
Для объекта по умолчанию есть конструктор
Да, есть.

Цитата Сообщение от Enifan Посмотреть сообщение
Для вытягивая данных из БД есть свои классы, типа SqlDataReader
Суть в следующем, в методе GetDefault идёт обращение к базе данных, из базы данных возвращается информация, вы присваиваете информацию которая получена из базы данных соответствующим свойства уже созданного объекта после чего развращаете объект с заполненными свойства.

Да, можно сделать через конструктор, но иногда надо будет создавать пустой объект (который создаётся конструктором по умолчанию), поэтому я решил, что использовать конструктор в моём случаи не самый удачный выход.

Пытаюсь понять, насколько хороша идея со статик методом.


Цитата Сообщение от Enifan Посмотреть сообщение
А вопрос то в чем ?
Цитата Сообщение от Чипс Посмотреть сообщение
Дайте совет, как лучше сделать.
0
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
05.05.2020, 11:52
Лучший ответ Сообщение было отмечено Чипс как решение

Решение

Цитата Сообщение от Чипс Посмотреть сообщение
информацию которая получена из базы данных соответствующим свойства уже созданного объекта
Как по мне единственный верный параметр передать в метод GetDefault() это ID, в остальных случаях можно получить не то, что ожидается. Например есть таблица
ID Name Price
1 Яблоко 50
2 Яблоко 100
3 Груша 50
Если передавать в БД поиск по имени или цене - можно получить несколько вариантов и либо рандомно вытягивать оставшиеся значения либо первые попавшиеся
Цитата Сообщение от Чипс Посмотреть сообщение
Пытаюсь понять, насколько хороша идея со статик методом.
Вопрос скорее риторический, здесь сколько людей столько и мнений. Как по статик здесь подходит, либо можно создать свой класс для работы с БД. Примерный набросок того как это могло бы выглядеть
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class Sql
{
    // Данные для SQL
    SqlConnection connect;
    SqlCommand command;
    SqlDataReader reader;
 
    public Sql()
    {
        // Подключение к SQL
        connect = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\HandBook\DataBase\DataBase\Database.mdf;Integrated Security=True");
        connect.Open();
 
        // Класс для запросов к SQL
        command = new SqlCommand();
        command.Connection = connect;
    }
 
    // Загружается пользовательский национальный язык (сейчас только id = 1)
    public string LoadUserNationalLanguage()
    {
        command.CommandText = "SELECT [language] FROM [users] WHERE [id] = 1";
        return command.ExecuteScalar().ToString();
    }
 
    // Загружается пользовательский CSS-стиль (сейчас только id = 1)
    public string LoadUserCssStyle()
    {
        command.CommandText = "SELECT [cssStyle] FROM [users] WHERE [id] = 1";
        return command.ExecuteScalar().ToString();
    }
 
    // Заполнение дерева элементов
    public void FillTree(TreeView tree, string lang)
    {
        tree.Nodes.Clear();
        command.CommandText = "SELECT * FROM [tree] JOIN [" + lang + "] ON [tree].id = [" + lang + "].id ORDER BY parentId, list";
        reader = command.ExecuteReader();
        var dictionary = new Dictionary<int, MyTreeNode>();
        while (reader.Read())
        {
            int id = reader.GetInt32(0);
            int? parentId = reader.IsDBNull(1) ? null : (int?)reader.GetInt32(1);
            string name = reader.GetString(4);
 
            var node = new MyTreeNode(id, name);
            MyTreeNode parent;
            if (parentId == null)
                tree.Nodes.Add(node); // Добавление ноды в контрол TreeView
            else if (dictionary.TryGetValue(parentId.Value, out parent))
                parent.Nodes.Add(node);
            dictionary.Add(id, node);
        }
        reader.Close();
    }
 
    // Получение информации для htmlMax, htmlMin
    public void GetInfoHtmlMaxMin(ref string htmlMax, ref string htmlMin, string userNationalLanguage, int id)
    {
        command.CommandText = "SELECT [infoMax], [infoMin] FROM [" + userNationalLanguage + "] WHERE [id] = @id";
        command.Parameters.Add(new SqlParameter("@id", id));
        reader = command.ExecuteReader();
        while (reader.Read())
        {
            htmlMax = reader.GetString(0);
            htmlMin = reader.IsDBNull(1) ? null : reader.GetString(1);
        }
        command.Parameters.Clear();
        reader.Close();
    }
 
    // Получение заголовка
    public string SelectTitle(string userNationalLanguage, int id)
    {
        command.CommandText = "SELECT [title] FROM [" + userNationalLanguage + "] WHERE [id] = @id";
        command.Parameters.Add(new SqlParameter("@id", id));
        string title = command.ExecuteScalar().ToString();
        command.Parameters.Clear();
        return title;
    }
}
1
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
05.05.2020, 12:54  [ТС]
Цитата Сообщение от Enifan Посмотреть сообщение
Вопрос скорее риторический, здесь сколько людей столько и мнений.
Спасибо.
Придётся сделать, а там будет видно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2020, 12:54
Помогаю со студенческими работами здесь

Как создать объект оператором new, если имеется только тип указателя на объект, переданный через шаблон?
Есть шаблон. Точно известно, что его параметр Т это указатель. Как с помощью new создать переменную типа *T ? Код приведенный ниже дает...

Возвратить объект параметром процедуры/функции со значением по умолчанию
Привет всем. Появилась необходимость в проекте изменить функцию... и нужно вернуть еще 1 параметр наружу... так как в коде уже эта...

Ошибка при перегрузка конструктора. Родительский объект инициализирует поле по умолчанию
простейший объект field с двумя полями int является полем класса Capp. поле с типом field создается и конструируется по умолчанию без...

Создать обЪект класса , у которого в параметрах конструктора объект этого же класса
Вот код: TOgmGraphicsClass = class of TOgmGraphicsBlock; TOgmGraphicsBlock = class(TOgmGraphicsItem) (Объект класса...

Составить программу, которая определяет четыре объекта класса и выводит их на экран. Первый объект должен инициализироваться по умолчанию, второй ис
Составить программу, которая определяет четыре объекта класса и выводит их на экран. Первый объект должен инициализироваться по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru