> For the complete documentation index, see [llms.txt](https://nas-3.gitbook.io/nasdatabase/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nas-3.gitbook.io/nasdatabase/database/databaseapi-fast-start/konsolnoe-prilozhenie.md).

# Консольное приложение

### Больше примеров!

#### Первый пример

Разработаем консольное приложение с функционалом сохранения сообщений, введенных пользователем. Более конкретно, приложение будет регистрировать время ввода, текст сообщения, а также подсчитывать количество слов в каждом сообщении.

В первую очередь нужно создать саму базу. Для этого мы будем проверять если уже проект с ней если есть, то просто загружать если нет, то будем создавать проект.&#x20;

```csharp
var DBM = new DatabaseManager();
string path = "D:\\TestConsole";//путь до проекта
Database DB;

if (Directory.Exists(path))//если папка есть, то загружаем БД
{
    DB = DBM.LoadDB(path, LoadKey());
}
else
{
    DB = DBM.CreateDatabase(new DatabaseSettings("TestConsole", "D:\\", 3));
    SaveKey(DB.Settings.Key);
}
```

{% hint style="info" %}
Важно помнить что ключ нужно сохранять самостоятельно!
{% endhint %}

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

```csharp
while (true)
{
     string MSG = Console.ReadLine();//Ввод пользователя 
     DateTime TimeNow = DateTime.Now;
     int Length = msg.Split(' ').Length;//Кол-во слов
                
     try
     {
          DB.AddData(TimeNow, MSG, Length);//Добавление данных в базу
     }
     catch (Exception ex) 
     {
          Console.ForegroundColor = ConsoleColor.Red;
          Console.WriteLine(ex.Message);
          Console.Clear();                   
     }
}
```

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

&#x20;Создадим метод для этого с использованием метода `SmartSearch` и перепишем основной код.&#x20;

```csharp
if (msg != "??")
{
      try
      {
            DB.AddData(dateTime, msg, l);
      }
      catch (Exception ex)
      {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex.Message);
            Console.Clear();
      }
}
else
{
      Console.WriteLine(SearchData(DB).Length);//Выводим кол-во элеметов с кол-вом слов >= 3
      Console.ReadKey();
}
```

```csharp
static DataLine[] SearchData(Database dataBase)//Функция запроса
{
     return dataBase.SmartSearch(new Column[] { (Column)dataBase["2"] },//В колонне #2, если считать с 1 
            new SearchType[] { SearchType.MoreOrEqually },// >=
            new string[] {"3"} );//Length >= 3
}
```
