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

Задача Генератор секвенсоров (SQL Server, ADO .Net)

26.08.2021, 16:18. Показов 2474. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Вот такая задача (есть какие-то советы, идеи, алгоритм действий):

Создать консольное приложение, которое решает следующую задачу:

В базе данных SQL Server задана таблица Counters, созданная следующим скриптом sql:

SQL
1
2
3
4
5
6
7
CREATE TABLE [dbo].[Counters](
                [ID] [INT] NOT NULL,
                [Val] [INT] NOT NULL,
                [TS] [datetime] NOT NULL,
CONSTRAINT [PK_Counters] PRIMARY KEY CLUSTERED([ID] ASC) 
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
Таблица используется для хранения последнего сгенерированного значения секвенсора, а также даты и времени его генерации. Необходимо разработать механизм, который генерирует последовательные уникальные значения секвенсоров, причем каждое последующее значение больше предыдущего на 1. Каждый секвенсор идентифицируется уникальным идентификатором (ID), начальное значение секвенсора равно 1. Если в таблице нет секвенсора с указанным идентификатором, механизм должен создать и инициализировать его. Идентификаторы всех секвенсоров - это целые числа, больше 0. Кроме того, при запуске программа должна очистить таблицу секвенсоров.
Сам механизм предназначен для параллельного использования во многих приложениях, поэтому при разработке следует уделять этому особое внимание (несколько приложений могут одновременно использовать механизм). => На что именно обратить внимание?

Вход:
В первой строке строка подключения передается в созданную базу данных (строка подключения ADO.NET). во второй строке количество запросов для генерации последовательных значений секвенсоров. В последующих строках передаются идентификаторы секвенсоров для генерации следующего значения.

Выход:
Для каждого переданного идентификатора для него создается значение секвенсора. Каждое значение в новой строке. Для неверного идентификатора выходное значение должно быть 0.

Пример:
Пример ввода выглядит следующим образом:
Server=myServerAddress; Database = myDataBase; Trusted_Connection=True;
3
1
2
1
Для секвенсоров с идентификаторами должно быть сгенерировано 3 значения: 1, 2 и 1.
Таким образом, правильный вывод должен выглядеть так: 1 1 2

Подскажите, что можно почитать либо если там ничего сложного - простой пример действий.
В общем, пока не знаю, с чего начать. Пока что буду изучать Троелсена, глава 21 Доступ к данным
с помощью ADO.NET (надеюсь, там найду какие-то ответы). Заранее спасибо за потраченное время.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.08.2021, 16:18
Ответы с готовыми решениями:

ADO.NET передача запроса на sql server
Сетевые пакеты запроса передаются на сервер БД по сети друг за другом или параллельно ?

Программа для работы с БД, используя ADO.NET ( сервер БД - MS SQL Server), открывать через браузер
Помогите разобраться, я не могу понять как программа должна открываться через браузер ( программа написана на C# с использованием...

Удаленный SQL-сервер Ado.Net + .Net remoting + Asp .Net
Всем привет! Нужно написать клиент-серверное приложение на основе Microsoft Sql Server 2005 Express Edition. Некое клиент-серверное...

11
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
26.08.2021, 17:03
Dreikone1, а где сам алгоритм генерации? И Пример еще раз, другой, с подробным описанием
0
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
26.08.2021, 17:19  [ТС]
Цитата Сообщение от Рядовой Посмотреть сообщение
Dreikone1, а где сам алгоритм генерации? И Пример еще раз, другой, с подробным описанием
Это все, что есть. Другого у меня нет ничего. Я только сейчас приступил к этому заданию, изучаю.
Видимо алгоритм генерации самому надо написать.

По поводу примера. Как я понимаю:
1. У нас есть бд с таблицей, созданной на основе вышеуказанного sql-запроса. Пользователь вводит
Server=myServerAddress; Database = myDataBase; Trusted_Connection=True; - через ReadLine считываем строку и
используем - а где и как, что значит "передается в созданную базу данных".

2. Что такое вообще секвенсор?

3. В базе хранятся созданные "секвенсоры" (может, просто имеется ввиду даты создания чисел и т.д.,
чисто символически, я хз)

4. Возможно, сначала требуется строка запроса, потом 3 - это количество этих "секвенсоров", потом присваиваем им значения 1, 2, 1 - а на выходе получаем эти значения по возрастанию.


По сути, решение не должно быть сильно мудреное, но если не 1 не понимаю изначального условия, то это тяжело.
Я сам до конца не понимаю, что именно тут нужно делать. Спросить не у кого.
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
26.08.2021, 17:26
Dreikone1, самое главное, как из 3 получить 1, 2, 1? Какой алгоритм? Еще пример нужен
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
26.08.2021, 17:32
Dreikone1,
1. Это строка подключения, она делается один раз и записывается в App.conf - https://metanit.com/sharp/adonetcore/
2. Гугл выдал только про музыку... Запрос был такой - секвенсор математика
Евклидов ритм: когда музыка работает по законам математики
0
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
26.08.2021, 17:37  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Dreikone1,
1. Это строка подключения, она делается один раз и записывается в App.conf - https://metanit.com/sharp/adonetcore/
2. Гугл выдал только про музыку... Запрос был такой - секвенсор математика
Евклидов ритм: когда музыка работает по законам математики
Да-да, про музыку я тоже уже читал
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
26.08.2021, 17:48
Dreikone1, во чего нашел
Секвенциальная логика
0
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
26.08.2021, 19:47  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Dreikone1, во чего нашел
Секвенциальная логика
Прочитал, жесть

Добавлено через 1 час 32 минуты
Вопрос: в теории я могу это сделать только средствами VS 2019 или нужно дополнительно еще ставить SQL Server?
В принципе, в VS можно создать и БД, и поиграться с ней.
Заранее спасибо за ответ.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.08.2021, 00:59
Цитата Сообщение от Dreikone1 Посмотреть сообщение
В первой строке строка подключения передается в созданную базу данных (строка подключения ADO.NET). во второй строке количество запросов для генерации последовательных значений секвенсоров. В последующих строках передаются идентификаторы секвенсоров для генерации следующего значения.
Выход:
Для каждого переданного идентификатора для него создается значение секвенсора. Каждое значение в новой строке. Для неверного идентификатора выходное значение должно быть 0.
Прочитал первый раз - бред,
Перечитал второй - бред сивой кобылы,
Перечитал третий - бред сивой кобылы, выпившей ведро водки.
Что значит "строка подключения передается в созданную базу данных" ?
А это: "количество запросов для генерации последовательных значений секвенсоров" ?
0
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,409
27.08.2021, 02:14
Цитата Сообщение от Dreikone1 Посмотреть сообщение
Таблица используется для хранения последнего сгенерированного значения секвенсора
А встроенный в СУБД "секвенсор" чем не устраивает? Я про Sequences.
1
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
27.08.2021, 08:57
Dreikone1, CREATE SEQUENCE (Transact-SQL)
0
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
27.08.2021, 12:36  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
Прочитал первый раз - бред,
Перечитал второй - бред сивой кобылы,
Перечитал третий - бред сивой кобылы, выпившей ведро водки.
Что значит "строка подключения передается в созданную базу данных" ?
А это: "количество запросов для генерации последовательных значений секвенсоров" ?
Я это понял так:

Первой строкой из консоли считывается путь для connectionString (обычным ReadLine())
Далее:
1. Пользователь вводит количество и потом столько же раз (сколько есть количество) вводит уникальные ID
2. Если ID нету в базе, то программа создает его и присваивает начальное значение 1
3. Если есть уже, то при выводе добавляет еще 1
4. ID могут быть только целые числа больше 0
5. При запуске программа чистит все значения секвенсоров (ID остаются и при новом запуске правила те же)
6. На выходе видим значения секвенсоров (те, что впервые созданы - значение 1, если нет - назначается +1 от старого)
7. Для неверного идентификатора выходное значение должно быть 0 ????????????

Добавлено через 1 минуту
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Хм, я даже близко не представляю, как это встроить в логику... вот пока что код

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
 private static string _connectionString = Console.ReadLine();
        private static string _selectId = "SELECT ID FROM [Counters]";
        static SqlDataReader SqlDataReader = null;
 
        static async Task Main(string[] args)
        {
            using (SqlConnection connection = new SqlConnection(_connectionString))
            {
                await connection.OpenAsync();
                if (connection.State == ConnectionState.Open)
                {
                    Console.WriteLine("Подключение открыто");
                }
 
                int countOfsecvensors = Convert.ToInt32(Console.ReadLine());
                for (int i = 0; i < countOfsecvensors; i++)
                {
                    int idOfSecquensor = Convert.ToInt32(Console.ReadLine());
                    SqlCommand sqlCommand = new SqlCommand(_selectId, connection);
                    SqlDataReader = sqlCommand.ExecuteReader();
                    while (SqlDataReader.Read())
                    {
                        if (idOfSecquensor != Convert.ToInt32(SqlDataReader["ID"]))
                        {
 
                        }
                        
                    }
                    SqlDataReader.Close();
                }
            }
 
            
 
            //Console.ReadLine();
 
        }

P.S. Знаю, что передавать стрингой просто так строку подключения - это ппц, типа лучше в app.config писать, но пока что так

Добавлено через 18 минут
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Читаю и до меня пока не доходит - конкретно в моем примере - пользователь вводит 3 - количество запросов для создания секвенсоров. Потом вводит 1,2,1 - это что ID в этой таблице?

А программа должна уже в колонки VALUE и DATE впихнуть значение (начиная от 1) и дату создания в зависимости от наличия этих ID?

Или я не правильно это еще понимаю. И в коде где вписывать использование логики секвенсора? Я так понял пока, что в этой задаче логика такого плана:
SQL
1
2
3
4
CREATE SEQUENCE Counter  
    AS INT  
    START WITH 1  
    INCREMENT BY 1 ;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.08.2021, 12:36
Помогаю со студенческими работами здесь

Команда DOT.NET, ASP.NET (1,2), Java Script, С++, С#, J#, VB, MS SQL 2000/2005, ADO.NET, Windows Forms etc. (Delphi, C++ Bilder).
&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;Times New Roman &lt;SPAN lang=RU style=&quot;mso-ansi-language: RU &lt;P class=MsoNormal style=&quot;MARGIN:...

Вопрос по MS ADO и SQL Server 2000
На клиенте есть адошный рекордсет - клон какого-то рекордсета, зачитанного ранее из HTML-файла через IISAM-драйвер &quot;HTML Import&quot;....

об ADO, MS SQL server и формате даты
Вопрос: каким таким образом установить формат даты в филде адошного рекордсета? В поле дата отображается как 1/3/2001, а надо 01.03.01. ...

ADO, SQL Server, Primary Key
Надо добавлять в Базу записи с уникальным ID. Insert into TABLE values ('', '', '',...,'уникальный ID') чтобы вычеслить этот...

Использование update + ado+sql server
mne neobhodimo v pole Number_Of_Reviews vnesti znachenie poluchenoe random dla vseh strok(razlichnoe), gde znachenie pola...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru