在 Delphi Android 中使用 SQLite 创建数据库

随着移动应用程序的快速发展,SQLite 已成为 Android 应用中最流行的嵌入式数据库。使用 Delphi 开发 Android 应用程序时,SQLite 提供了一种简单高效的数据存储方案。本指南将介绍如何在 Delphi Android 中创建和管理 SQLite 数据库,并通过示例代码加以说明。

什么是 SQLite?

SQLite 是一个轻型的关系数据库,具有较小的占用空间和较强的性能,适合用于移动设备的应用程序。SQLite 不需要服务器,它将所有数据存储在一个单一的文件中。对于资料存取频繁的应用程序,SQLite 是理想的选择。

在 Delphi 中使用 SQLite

Delphi 提供了一个名为 FireDAC 的库,用于与各种数据库进行交互,包括 SQLite。FireDAC 是一个强大的通用数据访问库,可以轻松管理 SQLite 数据库,包括创建、查询、更新和删除数据等。

创建 SQLite 数据库

在使用 Delphi 创建 SQLite 数据库时,可以使用以下步骤:

  1. 添加 FireDAC 组件:在 Delphi 中,打开工具面板,寻找 FireDAC 相关组件,并将其拖放到表单中。

  2. 配置 SQLite 连接:使用 TFDConnection 组件配置 SQLite 数据库连接。确保正确设置数据库路径。

  3. 创建数据库表:使用 TFDQuery 组件执行 SQL 语句以创建数据库表。

示例代码

下面是一个基本示例,展示如何在 Delphi Android 应用中创建 SQLite 数据库和表。

procedure TForm1.CreateDatabase;
var
  FDConnection: TFDConnection;
  FDQuery: TFDQuery;
begin
  FDConnection := TFDConnection.Create(nil);
  FDQuery := TFDQuery.Create(nil);
  try
    // 设置连接信息
    FDConnection.DriverName := 'SQLite';
    FDConnection.Params.Database := TPath.Combine(TPath.GetDocumentsPath, 'MyDatabase.db');
    FDConnection.Connected := True;

    // 创建数据库表
    FDQuery.Connection := FDConnection;
    FDQuery.SQL.Text := 'CREATE TABLE IF NOT EXISTS Users (' +
                        'ID INTEGER PRIMARY KEY AUTOINCREMENT,' +
                        'Name TEXT NOT NULL,' +
                        'Email TEXT NOT NULL);';
    FDQuery.ExecSQL;
  finally
    FDQuery.Free;
    FDConnection.Free;
  end;
end;

在上述代码中,我们创建一个名为 Users 的表,其中包含 IDNameEmail 三个字段。在创建过程中,我们确保数据库已经存在,如果不存在则创建。

数据库关系图

在创建数据库时,了解其结构非常重要。下面是使用 Mermaid 语法表示的简单关系图:

erDiagram
    USERS {
        INTEGER ID PK "用户ID"
        STRING NAME "用户姓名"
        STRING EMAIL "用户邮箱"
    }

在这个图中,USERS 表示我们刚才创建的 Users 表,ID 是主键,NameEmail 分别表示用户的姓名和电子邮件地址。

插入数据

现在我们来看看如何向数据库中插入数据。我们仍然会使用 TFDQuery 组件来执行 SQL 语句插入数据。

procedure TForm1.InsertUser(Name, Email: string);
var
  FDConnection: TFDConnection;
  FDQuery: TFDQuery;
begin
  FDConnection := TFDConnection.Create(nil);
  FDQuery := TFDQuery.Create(nil);
  try
    FDConnection.DriverName := 'SQLite';
    FDConnection.Params.Database := TPath.Combine(TPath.GetDocumentsPath, 'MyDatabase.db');
    FDConnection.Connected := True;

    FDQuery.Connection := FDConnection;
    FDQuery.SQL.Text := 'INSERT INTO Users (Name, Email) VALUES (:Name, :Email)';
    FDQuery.ParamByName('Name').AsString := Name;
    FDQuery.ParamByName('Email').AsString := Email;
    FDQuery.ExecSQL;
  finally
    FDQuery.Free;
    FDConnection.Free;
  end;
end;

此函数 InsertUser 接受用户姓名和电子邮件作为参数,并将其插入到 Users 表中。

查询数据

接下来,让我们看看如何查询数据库中的数据,并将其显示在应用程序中。

procedure TForm1.LoadUsers;
var
  FDConnection: TFDConnection;
  FDQuery: TFDQuery;
begin
  FDConnection := TFDConnection.Create(nil);
  FDQuery := TFDQuery.Create(nil);
  try
    FDConnection.DriverName := 'SQLite';
    FDConnection.Params.Database := TPath.Combine(TPath.GetDocumentsPath, 'MyDatabase.db');
    FDConnection.Connected := True;

    FDQuery.Connection := FDConnection;
    FDQuery.SQL.Text := 'SELECT * FROM Users';
    FDQuery.Open;

    while not FDQuery.Eof do
    begin
      ShowMessage('User: ' + FDQuery.FieldByName('Name').AsString + ', Email: ' + FDQuery.FieldByName('Email').AsString);
      FDQuery.Next;
    end;
  finally
    FDQuery.Free;
    FDConnection.Free;
  end;
end;

此函数查询 Users 表中的所有用户,并逐一显示在消息框中。

状态管理

在应用程序开发中,状态管理是十分重要的。通过正确的状态管理,我们能够更好地控制应用的行为。以下是一个使用 Mermaid 语法表示的简单状态图:

stateDiagram
    [*] --> Idle
    Idle --> Creating : create database
    Creating --> Reading : read data
    Reading --> Idle : done
    Idle --> Inserting : insert user
    Inserting --> Idle : done

这个状态图描述了应用程序的生命周期。它从初始状态 Idle 开始,经过创建数据库、读取数据和插入用户等状态,最终又回到初始状态。

结论

在 Delphi Android 中使用 SQLite 创建和管理数据库是一个相对简单的过程。通过使用 FireDAC 组件,我们能够轻松地执行各种数据库操作,包括创建表、插入数据和查询数据。这一系列的步骤为我们开发具有数据存储功能的 Android 应用程序提供了强大的支持。在实际的开发过程中,根据项目的需求,您可以进一步扩展和改进这些示例代码,使其更加符合您的需求。通过深入学习 SQLite 和 Delphi,您将能够为用户提供更加高效和流畅的应用体验。