Рубрики
Uncategorized

Создание первого приложения с помощью C ++ Builder (часть 2)

Добро пожаловать в нашу серию о создании приложения для напоминания в C ++ Builder! Наша последняя статья … Tagged с программным обеспечением, DevOps, WebDev.

Добро пожаловать в нашу серию о создании приложения для напоминания в C ++ Builder !

Наша последняя статья обсуждалась Как настроить C ++ Builder разработать пользовательский интерфейс, перетаскивая и сбрасывая компоненты, и напишите код для управления некоторыми компонентами.

Если вы не читали: Создание первого приложения с помощью C ++ Builder (часть 1)

Эта часть будет интегрировать SQLite в приложение и попытаться сохранить напоминания, добавленные пользователями в базу данных.

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

Четвертый шаг: создать базу данных

C ++ Builder Позволяет использовать несколько баз данных в одной программе с его библиотекой FireDac. Мы интегрируем нашу базу данных SQLite в это приложение.

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

Обратите внимание, что FireDac позволяет интегрировать несколько баз данных в ваше приложение. После того, как вы загрузили и настроили базу данных, вам нужно будет выбрать тип базы данных и связать ее с вашим приложением.

Дважды щелкните FDConnection в форме дизайна. Это действие откроет редактор подключения FireDac. Здесь вы можете выбрать имя базы данных, которую вы собираетесь использовать, и предоставить более подробную информацию о базе данных.

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

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

Мы создали базу данных на рабочем столе, расположенном в следующем пути:

C:\\Users\\uk\\OneDrive\\Desktop\\reminderdb.db

Пятый шаг: запишите в базу данных

Когда мы нажимаем кнопку «Добавить напоминание», мы хотим взять текущее время пользователя и выбранную дату, используя сборщики времени и дат -времени, соответственно, и сохранить их в базе данных.

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

Мы также добавили кнопку «Показать напоминания», чтобы получить напоминания из базы данных и отобразить их в записке.

Дважды нажмите кнопку «Добавить напоминание», чтобы создать пустую функцию FastCall для кнопки «AddReminder». В этой функции мы будем использовать нашу FDConnection для подключения к базе данных.

Необходимо указать имя драйвера и путь к базе данных. Это поможет программе определить местоположение базы данных, которую она будет общаться с ней.

FDConnection1->DriverName = "SQLite";
FDConnection1->Params->Values["Database"] = "C:\\Users\\uk\\OneDrive\\Desktop\\reminderdb.db";

Как только это будет сделано, вы можете написать код, который будет изменять, вставлять, обновлять, удалять или извлекать данные из базы данных. Начните с открытия соединения в базу данных, используя эту команду,

FDConnection1→Open();

Эта команда идет рука об руку с командой Blose Database, и как только мы закончим выполнять все запросы, нам нужно будет закрыть соединение с базой данных, используя:

FDConnection1→Close();

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

Чтобы создать таблицу, мы можем вызвать оператор execSQL, чтобы выполнить запрос SQL.

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

Добавьте следующее оператор для создания таблицы, если она не существует в базе данных.

FDConnection1->ExecSQL("CREATE TABLE IF NOT EXISTS Reminder (Id int, time TEXT NOT NULL)");

Затем мы хотим вставить время в базу данных. Мы все еще можем использовать функцию execSQL после получения значения DateTime, используя код, который мы написали в предыдущей части этой статьи:

String date =  dateTime.FormatString("dd/mm/yyyy HH:mm");
FDConnection1->ExecSQL("INSERT INTO Reminder (time) VALUES ('"+date+"')");

Шестой шаг: прочитайте из базы данных

Чтобы получить добавленные напоминания из базы данных, дважды нажмите кнопку «Показать напоминания», чтобы создать пустую функцию FastCall для получения напоминаний.

Мы будем использовать TFDQUERY. TFDQUERY используется для выполнения запросов и позволит нам использовать наборы результатов.

Вот какой -то образец кода, иллюстрирующий, как использовать TFDQUERY. Здесь мы хотим выбрать все напоминания из таблицы напоминаний и отобразить их пользователю.

TFDQuery *query;
query = new TFDQuery(this);
query->Connection = FDConnection1;
query->SQL->Text = "SELECT * FROM Reminder";
query→Open();

Чтобы использовать TFDQUERY, в ваш код должен быть добавлен следующий заголовок:

#include 

Код для вывода полученных данных

TVarRec args[1] = {"time"};
Memo1->Lines->Add(System::UnicodeString::Format("|%25s |", args,ARRAYSIZE(args) - 1));
while (!query->Eof) {
TVarRec arguments[1] = { query->FieldByName("time")->AsString};
    Memo1->Lines->Add(System::UnicodeString::Format("|%-25s |", arguments, ARRAYSIZE(arguments) - 1));
    query->Next();
}

Когда все различные разделы общих кодов складываются вместе, мы получаем следующую программу:

#include  
void __fastcall TForm2::buttonAddReminderOnClick(TObject *Sender)
{
    TDateTime dateTime;
    ReplaceDate(dateTime, DateTimePicker1->Date);
    ReplaceTime(dateTime, TimePicker1->Time);
    Memo1->Text = "";
    FDConnection1->DriverName = "SQLite";
    FDConnection1->Params->Values["Database"] =  "C:\\Users\\k_umm\\OneDrive\\Desktop\\reminderdb.db";
    try
    {
        FDConnection1->Open();
        FDConnection1->ExecSQL("CREATE TABLE IF NOT EXISTS Reminder (id INTEGER PRIMARY KEY AUTOINCREMENT, time TEXT NOT NULL)");
        String date =  dateTime.FormatString("dd/mm/yyyy HH:mm");
        FDConnection1->ExecSQL("INSERT INTO Reminder (time) VALUES ('"+date+"')");
        FDConnection1->Close();
    }
    catch (Exception& E)
    {
        Memo1->Text = E.Message;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm2::buttonShowReminderOnClick(TObject *Sender)
{
    FDConnection1->DriverName = "SQLite";
    FDConnection1->Params->Values["Database"] =  "C:\\Users\\k_umm\\OneDrive\\Desktop\\reminderdb.db";
    try
    {
        FDConnection1->Open();
        TFDQuery *query;
        query = new TFDQuery(this);
        query->Connection = FDConnection1;
        query->SQL->Text = "SELECT * FROM Reminder";
        query->Open();
        TVarRec args[1] = {"time"};
        Memo1->Lines->Add(System::UnicodeString::Format("|%25s |", args, ARRAYSIZE(args) - 1));
        while (!query->Eof) {
          TVarRec arguments[1] = { query->FieldByName("time")->AsString};
          Memo1->Lines->Add(System::UnicodeString::Format("|%-25s |", arguments, ARRAYSIZE(arguments) - 1));
          query->Next();
        }
        query->Close();
        FDConnection1->Close();
    }
    catch (Exception& E)
    {
        Memo1->Text = E.Message;
    }
}

Седьмой шаг:

До сих пор мы создали приложение для мини -напоминания, которое получает ввод от пользователя и хранит его в базе данных.

Наши пользователи также ожидают получить уведомления в течение указанных периодов.

Увольнение поддерживается Android, MacOS и iOS. Это может быть использовано путем передачи информации о дате и времени, когда уведомление должно быть вызвано.

MyNotification->FireDate = System::Dateutils::EncodeDateTime(2015, 12, 16, 17, 30, 00, 00);

Вы можете найти больше информации о том, как использовать уведомления в вашем приложении Здесь :

Для некоторого образца кода, на который вы можете обратиться, Нажмите здесь Анкет

Оригинал: «https://dev.to/ideradevtools/building-your-first-app-using-c-builder-part-2-44lk»