Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 0 / 1
Регистрация: 01.07.2019
Сообщений: 42

Передача и использования объекта класса в бд posgressql

02.05.2022, 21:28. Показов 432. Ответов 1

Студворк — интернет-сервис помощи студентам
Есть вопрос, есть ли возможность передать готовый объект класса в бд , а потом его извлечь и использовать. Для примера создал объект класса treeview в нем содержатся деревья папок с именами. По идее нужно привести к типу object его и передать в бд. Тут вопрос какой тип использовать для поля в бд и как это вообще реализовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2022, 21:28
Ответы с готовыми решениями:

Передача объекта из одного экземпляра класса в другой с запретом обращаться к методам и свойствам этого объекта
Всем привет! Есть класс, в котором используется объект (MyObject, объявленный в private). При создании второго экземпляра этого класса...

Передача пераметров объекта для дальнейшего использования
Здравствуйте! Пытаюсь написать простенький код на С++ с использованием классов. Не получается передать уже рассчитанный параметр в главной...

Передача объекта класса в метод другого класса
Доброго времени суток! Есть следующие классы: public class TestClass : IDisposable { public void Dispose() ...

1
 Аватар для Andrey-MSK
3313 / 2200 / 387
Регистрация: 14.08.2018
Сообщений: 7,404
Записей в блоге: 4
04.05.2022, 08:35
Marazm54, чет я не совсем понял что имеется ввиду под вот этим
Цитата Сообщение от Marazm54 Посмотреть сообщение
есть ли возможность передать готовый объект класса в бд
Если имеется ввиду запись объекта в БД, то вот так
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public async Task AddItemAsync(Draw itemToAdd)
{
    string sqlText =
        "INSERT INTO dbo.tblDraw (ID_GenPlan, DrawNum, DrawName, Stage, StageTEP, Works, ByUnit) " +
        "VALUES (@idGP, @drawNum, @drawName, @stage, @stageTEP, @works, @byUnit); " +
        "SELECT @newID = SCOPE_IDENTITY();";
 
    using (SqlConnection sqlConnection = new SqlConnection(_connectionString))
    {
        try
        {
            await sqlConnection.OpenAsync();
 
            using (SqlCommand sqlCommand = new SqlCommand(sqlText, sqlConnection))
            {
                SqlParameter paramID = new SqlParameter
                {
                    ParameterName = "@idGP",
                    Value = itemToAdd.GPlanID,
                    SqlDbType = SqlDbType.Int,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramID);
 
                SqlParameter paramDNum = new SqlParameter
                {
                    ParameterName = "@drawNum",
                    Value = itemToAdd.DNumber,
                    SqlDbType = SqlDbType.NVarChar,
                    Size = 50,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramDNum);
 
                SqlParameter paramDName = new SqlParameter
                {
                    ParameterName = "@drawName",
                    Value = itemToAdd.DName,
                    SqlDbType = SqlDbType.NVarChar,
                    Size = 255,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramDName);
 
                SqlParameter paramStage = new SqlParameter
                {
                    ParameterName = "@stage",
                    Value = itemToAdd.DStage,
                    SqlDbType = SqlDbType.NVarChar,
                    Size = 50,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramStage);
 
                SqlParameter paramStTEP = new SqlParameter
                {
                    ParameterName = "@stageTEP",
                    Value = itemToAdd.DStageTEP,
                    SqlDbType = SqlDbType.Int,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramStTEP);
 
                SqlParameter paramWorks = new SqlParameter
                {
                    ParameterName = "@works",
                    Value = itemToAdd.DWorks,
                    SqlDbType = SqlDbType.NVarChar,
                    Size = 50,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramWorks);
 
                SqlParameter paramByUnit = new SqlParameter
                {
                    ParameterName = "@byUnit",
                    Value = itemToAdd.DByUnit,
                    SqlDbType = SqlDbType.Int,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramByUnit);
 
                SqlParameter paramNewID = new SqlParameter
                {
                    ParameterName = "@newID",
                    SqlDbType = SqlDbType.Int,
                    Direction = ParameterDirection.Output
                };
                sqlCommand.Parameters.Add(paramNewID);
 
                foreach (SqlParameter parameter in sqlCommand.Parameters)
                {
                    if (parameter.Value == null || parameter.Value as string == "")
                    {
                        parameter.Value = DBNull.Value;
                    }
                }
 
                await sqlCommand.ExecuteNonQueryAsync();
 
                itemToAdd.DrawID = (int)sqlCommand.Parameters["@newID"].Value;
            }
        }
        catch (Exception ex)
        {
            throw new ApplicationException("Ошибка записи нового чертежа.", ex);
        }
    }
}
Получение объекта из БД производится так
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
public async Task<Draw> GetByIDAsync(int itemID)
{
    Draw draw = new Draw();
    string sqlText =
        "SELECT ID_Draw, ID_GenPlan, DrawNum, DrawName, Stage, StageTEP, Works, ByUnit " +
        "FROM dbo.tblDraw " +
        "WHERE ID_Draw = @idDraw";
 
    using (SqlConnection sqlConnection = new SqlConnection(_connectionString))
    {
        try
        {
            await sqlConnection.OpenAsync();
 
            using (SqlCommand sqlCommand = new SqlCommand(sqlText, sqlConnection))
            {
                SqlParameter paramID = new SqlParameter
                {
                    ParameterName = "@idDraw",
                    Value = itemID,
                    SqlDbType = SqlDbType.Int,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramID);
 
                using (SqlDataReader sqlDataReader = await sqlCommand.ExecuteReaderAsync())
                {
                    while (await sqlDataReader.ReadAsync())
                    {
                        draw.DrawID = (int)sqlDataReader["ID_Draw"];
                        draw.GPlanID = (int)sqlDataReader["ID_GenPlan"];
                        draw.DNumber = sqlDataReader["DrawNum"] as string ?? "";
                        draw.DName = sqlDataReader["DrawName"] as string ?? "";
                        draw.DStage = sqlDataReader["Stage"] as string ?? "";
                        draw.DStageTEP = (int)sqlDataReader["StageTEP"];
                        draw.DWorks = sqlDataReader["Works"] as string ?? "";
                        draw.DByUnit = (int)sqlDataReader["ByUnit"];
                    }
                }
            }
 
            return draw;
        }
        catch (Exception ex)
        {
            throw new ApplicationException("Ошибка загрузки данных по чертежам.", ex);
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2022, 08:35
Помогаю со студенческими работами здесь

Передача объекта класса в функцию С++
Всем привет! Возник вопрос по классам. Допустим мне нужно изменить объект класса через функцию вызываемую в main. Я пробовал через...

Передача объекта класса в функцию
У меня есть класс number который имеет приблизительно такие переменные(все поля паблик): class number { public: int* mass; ...

Передача события из объекта класса
Здравствуйте! Я только изучаю C#, вопрос касается событий. Предположим, у меня два класса А и Б. В А есть функция, в которой...

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

Передача объекта класса в функцию
Здравствуйте! У меня есть следующие классы: MainLoop - класс основного цикла. Хранит в себе объект своего состояния (этот объект он...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru