# 로컬 DB

## Hive

Hive는 Flutter 앱에서 로컬 데이터베이스를 구축하고 관리하기 위한 효율적인 패키지로, 사용자가 Hive 데이터베이스와 상호 작용할 수 있는 사용자 인터페이스를 제공합니다 Hive 가이드를 참고하여 로컬 데이터를 저장, 검색, 업데이트 및 삭제할 수 있습니다.&#x20;

#### 초기 설정

Hive를 사용하기 전에 앱에서 Hive를 초기화해야 합니다. 이를 위해 `main.dart` 파일에서 다음 초기화 코드를 추가해야 합니다.

```dart
Future<void> main() async {
  // 다른 초기화 작업 수행
  await Hive.initFlutter();
  await Hive.openBox('${your dbTitle}');
  // 필요한 초기화 작업 수행
}
```

#### Hive 데이터베이스&#x20;

**1. 데이터 입력**

Hive 데이터베이스 작업을 수행하기 위해 다음 입력 필드를 채워야 합니다.

* **Hive database key**

<figure><img src="/files/9uWMqQ6MqEO8JWl7w0ds" alt=""><figcaption></figcaption></figure>

: 데이터베이스에서 사용할 고유한 키를 입력합니다. 이것은 숫자여야 합니다.

* **Hive database value**

<figure><img src="/files/3Wo5mGJ5S5A6SqEZIPYh" alt=""><figcaption></figcaption></figure>

: 데이터베이스에 저장할 값을 입력합니다.

**2. 데이터베이스 작업 버튼**

다양한 데이터베이스 작업을 수행할 버튼이 제공됩니다.

* **Hive get (key 값 입력)**

```dart
FlutterHive().getBox(dbTitle: 'tutorial', dbKey: hiveKey!);
```

: 입력한 key 값에 해당하는 value를 검색합니다.

* **Hive add (value 값 입력)**

```dart
FlutterHive().addBox(dbTitle: 'tutorial', dbValue: hiveValue!);
```

: 새로운 value를 추가하며, key 값은 마지막 key 값 다음으로 자동 지정됩니다.

* **Hive put (key, value 값 입력)**

```dart
FlutterHive().putBox(
                      dbTitle: 'tutorial',
                      dbKey: hiveKey!,
                      dbValue: hiveValue!);
```

: 특정 key 값에 value를 추가하거나 업데이트합니다.

* **Hive delete (key 값 입력)**

```dart
FlutterHive().deleteBox(dbTitle: 'tutorial', dbKey: hiveKey!);
```

: 입력한 key에 해당하는 value를 삭제합니다.

* **Hive delete all (key 값 입력)**

```dart
FlutterHive()
                      .deleteAllBox(dbTitle: 'tutorial', dbKeys: [hiveKey!]);
```

: 여러 개의 key 값을 가진 항목을 삭제합니다.

* **Hive clear (key 값 입력)**

```dart
 FlutterHive().clearBox(dbTitle: 'tutorial');
```

: 데이터베이스의 모든 key와 value를 삭제합니다.

Hive를 사용하여 Flutter 앱에서 로컬 데이터베이스를 설정하고 데이터를 관리하는 방법을 소개했습니다. Hive를 사용하면 데이터를 효율적으로 저장하고 검색할 수 있으며, 간단한 구현을 통해 로컬 데이터베이스를 구축할 수 있습니다. Hive를 활용하여 데이터를 지속적으로 유지하고 관리하세요.

## SQLite

SQLite는 모바일 앱에서 로컬 데이터베이스를 구현하는 데 사용되는 경량 데이터베이스 엔진으로서, 사용자에게 입력 필드와 버튼을 제공하여 SQLite 데이터베이스와 상호 작용할 수 있는 사용자 인터페이스를 제공합니다. SQLite 가이드를 참고하여 Flutter 앱에서 SQLite를 사용하여 로컬 데이터베이스를 설정하고 데이터를 추가, 조회, 업데이트 및 삭제할 수 있습니다.

#### 초기 설정

먼저 앱에서 SQLite를 사용하려면 SQLite 패키지를 초기화해야 합니다. 아래와 같이 `main.dart` 파일에서 초기화 코드를 추가합니다:

```dart
Future<void> main() async {
  // 다른 초기화 작업 수행
  // SQLite 초기화
}
```

#### SQLite 데이터베이스

**1. 데이터 입력**

먼저 SQLite 데이터베이스 작업을 수행하기 위해 다음 입력 필드를 채워야 합니다.

* **id**

<figure><img src="/files/iRdvSYpurrUBdhPmIFYJ" alt=""><figcaption></figcaption></figure>

: 데이터베이스 레코드의 고유 ID를 입력합니다. 이것은 숫자여야 합니다.

* **name**

<figure><img src="/files/gdup5a6xKxfa2hFHY8Zj" alt=""><figcaption></figcaption></figure>

: 레코드에 연결할 이름을 입력합니다.

* **age**

<figure><img src="/files/y3auTDSaLJNkDpaZT5wc" alt=""><figcaption></figcaption></figure>

: 레코드의 연령을 입력합니다. 또한 숫자여야 합니다.

**2. 데이터베이스 작업 버튼**

아래에는 다양한 데이터베이스 작업을 수행할 버튼이 있습니다.

* **CREATE (id, name, age 값 입력)**

```dart
 FlutterSqlite().create(
                        id: sqliteId!, name: sqliteName!, age: sqliteAge!);
```

: 입력한 id, name 및 age 값에 기반하여 데이터베이스에 레코드를 만듭니다.

* **SELECT ID (id 값 입력)**

```dart
 FlutterSqlite().read(id: sqliteId!);
```

: 입력한 id에 해당하는 레코드의 name과 age 값을 조회합니다.

* **SELECT ALL**

```dart
FlutterSqlite().readAll();
```

: 데이터베이스에 저장된 모든 레코드를 조회합니다.

* **DELETE (id 값 입력)**

```dart
 FlutterSqlite().delete(id: sqliteId!);
```

: 입력한 id에 해당하는 레코드를 삭제합니다.

이렇게 각 버튼을 사용하여 SQLite 데이터베이스 작업을 수행할 수 있습니다.

SQLite를 사용하여 Flutter 앱에서 로컬 데이터베이스를 설정하고 관리하는 방법을 소개했습니다. 이것은 모바일 앱에서 데이터를 지속적으로 저장하고 검색하는 데 매우 유용한 도구입니다. SQLite를 사용하면 간단하게 로컬 데이터베이스를 구축하고 데이터를 유지 관리할 수 있습니다.

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.aliothx.net/start/option/index/db.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
