<MyRusakov.ru />

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Работаем с SQLite в C# посредством объектного слоя. Часть 1

Работаем с SQLite в C# посредством объектного слоя. Часть 1

Доброго времени суток! В данной статье мы начнем расcматривать с Вами работу с базой данных SQLite в C#. Мы реализуем свою собственную объектную обертку для работы с базой, по аналогии с тем как это сделано в промышленных фреймворках, т.е. мы будем с базой работать посредством объектов и результат выборки из базы также будет представлен объектами или их списками.

SQLite - это переносимая база данных, которая имеет небольшой размер и позволяет сохранять структурированные данные и работать с ними посредством знакомых SQL-команд.

Фактически у нас будут обычные объекты C#, которые мы будем сохранять, извлекать, удалять и модифицировать без работы с SQL-командами напрямую.

Итак, приступим.

Файл Program.cs


using Microsoft.Data.Sqlite; // эту библиотеку для работы с SQLite берем из пакетного менеджера nuget
using System.Data;
using System.Reflection;
using System.Text;

namespace CSharpSqliteDemo
{   
    // наш собственный атрибут для ID полей классов-сущностей
    // говорит о том, что это поле автоматические генерируется базой
    [AttributeUsage(AttributeTargets.Property)]
    class AutoGeneratedAttribute : Attribute { }


    // базовый класс сущности базы данных
    // в нашем случае нужен для форматирования объекта в строку
    class Entity
    {

        public override string ToString()
        {
            var className = GetType().Name;
            var properties = GetType().GetProperties();
            var list = new List<string>();

            foreach (var property in properties)
            {
                list.Add($"{property.Name}={property.GetValue(this)}");
            }


            return $"[Object {className}({string.Join(';', list)})]";
        }
    }


    // представляет пользователя из таблицы Users в базе данных
    class User : Entity
    {
        // это поле генерируется автоматически базой данных
        [AutoGenerated]
        public int Id { get; set; }

        // имя 
        public string? Name { get; set; }

        // возраст
        public int Age { get; set; }

    }

    // точка входа в приложение
    internal class Program
    {
        static void Main(string[] args)
        {
            // создаем подключение к БД пользователей, если файла БД не существует он будет создан автоматически
            using var connection = new SqliteConnection("Data Source=usersdata.db");

            // класс репозитория пользователя - работает с базой данных
            // посредство операций чтения, изменения, удаления и обновления
            using var repo = new UserRepository(connection);

            // создаем объект пользователя, который отображается на строки таблицы (конвертируется в строки таблицы БД)
            var user = new User
            {
                Name = "Михаил Русаков",
                Age = 30
            };

            // создаем пользователя и возвращаем его идентификатор (который создала для нас база)
            int lastId = repo.Create(user);


            // читаем данные из таблицы и возвращаем объект пользователя
            var dbUser = repo.Read(19);

            Console.WriteLine(dbUser);


            // обновление записи в базе данных
            repo.Update(new User
            {
                Id = 1,
                Name = "Misha",
                Age = 29
            });

            // удаляет пользователя с Id = 1
            repo.Delete(1);
        }
    }
}

Файл UserRepository.cs


using Microsoft.Data.Sqlite;

namespace CSharpSqliteDemo
{
    // класс репозитория пользователей расширяет обобщенный базовый класс 
    class UserRepository : BaseRepository<User>
    {
        public UserRepository(SqliteConnection dbConnection) : base(dbConnection, "Users") {}

        // здесь мы в ручную создаем структуру нашей таблицы (ее поля должны соответствовать полям класса)
        protected override string TableSchemaSql()
        {
            return $@"
                CREATE TABLE IF NOT EXISTS {table} (
                    Id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, -- идентификатор пользователя (автоматически генерируется базой)
                    Name TEXT NOT NULL,                                   -- имя пользователя (строка, не может быть пустой)
                    Age INTEGER NOT NULL                                  -- возраст (число, не может быть пустым)
            )";
        }

    }
}


Таким образом, в данной статье мы рассмотрели объектный интерфейс для работы с базой данных SQLite, а в следующей рассмотрим непосредственно саму реализацию этого интерфейса.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.