# Cordova Sqlite Storage プラグイン

この Cordova プラグインは、HTML5/Web SQL API を使用して Android、iOS、Windows 上で sqlite データベースを開き、使用します。

* Repo: <https://github.com/litehelpers/Cordova-sqlite-storage>
* Plugin ID/Package Name: `cordova-sqlite-storage`
* Tested Version: 6.1.0

{% hint style="info" %}
サードパーティー製 Cordova プラグインを確認する場合は、カスタムビルドデバッガー ( [Android 版](https://ja.docs.monaca.io/products_guide/debugger/installation/debugger_android#kasutamubirudo-monaca-debaggnobirudotoinsutru) または [iOS 版](https://ja.docs.monaca.io/products_guide/debugger/installation/debugger_ios#kasutamubirudo-monaca-debaggnobirudo) ) を作成する必要があります。
{% endhint %}

## デモ

[<img src="https://docs.monaca.io/images/common/import_img.png" alt="" data-size="line">プロジェクトをインポート](https://monaca.mobi/ja/directimport?pid=64cb0450e78885302d01d556)

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgxuNmNOa9z6OXZhSWJ%2F-MgxutqF8az_-nuDcXbA%2Fimage.png?alt=media\&token=9e463a5d-594b-497b-9182-85d4ca9e48cf)

## Monaca クラウド IDE でプラグインを有効にする

1. IDE メニューか&#x3089;**`設定 → Cordova プラグインの管理`**&#x3078;移動します。
2. &#x20;`Cordova プラグインのインポート`ボタンをクリックします。 次に、\[ZIP ファイル] または \[パッケージ名 / URL] を使用してプラグインをインポートします。

## 使い方

プラグインをプロジェクトへインポート後、データベースの初期化を開始できます。\[deviceready] イベント後にプラグイン API を使用します。

```javascript
var database = null;

document.addEventListener("deviceready", function(){
    // Initialize the database after the Cordova is ready.
    initDatabase();
});

function initDatabase() {
    database = window.sqlitePlugin.openDatabase({name: 'sample.db', location: 'default'});

    database.transaction(function(transaction) {
        transaction.executeSql('CREATE TABLE SampleTable (name, score)');
    });
}
```

## API リファレンス

ここでは、[デモ](https://monaca.mobi/directimport?pid=5ac33652e78885cd208b4567) で使用されている主な API について説明します。 完全なAPIリファレンスについては、[こちら](https://github.com/litehelpers/Cordova-sqlite-storage) を参照してください。

### セルフテスト 機能

#### echoTest()

このプラグインの Javascript とネイティブ部分の両方がアプリにインストールされていることを確認してください。

```javascript
window.sqlitePlugin.echoTest(successCallback, errorCallback);
```

**戻り値**

* `Promise`

#### selfTest()

プラグインがデータベースを開き、CRUD (作成、読み取り、更新、削除) 操作を実行し、正しくクリーンアップできることを確認します。

```javascript
window.sqlitePlugin.selfTest(successCallback, errorCallback);
```

**戻り値**

* `Promise`

### データベースの操作

データベースオブジェクトを開きます。

```javascript
window.sqlitePlugin.openDatabase({name: String, [location: String], 
[iosDatabaseLocation: String]}, [successCallback], [errorCallback]);
```

**パラメーター**

| パラメーター名               | 型      | 説明                                                                                                                                                                                                                                                                                                                              |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                | String | データベースの名前                                                                                                                                                                                                                                                                                                                       |
| `location`            | String | \[オプション] データベースの場所                                                                                                                                                                                                                                                                                                              |
| `iosDatabaseLocation` | String | <p>\[オプション] iOSデータベースの場所。</p><p></p><ul><li><code>default</code>: Library/LocalDatabase サブディレクトリ - iTunes には表示されず、iCloud によってバックアップされません。</li><li><code>Library</code>: Library サブディレクトリ - iCloud によってバックアップされ、iTunes には表示されません。</li><li><code>Documents</code>: Documents サブディレクトリ - iTunesに表示され、iCloudによってバックアップされる</li></ul> |

**戻り値**

* `Promise`&#x20;

**例**

既定または指定された場所でデータベースアクセスハンドルオブジェクトを開く例：

```javascript
// use the default location
var database = window.sqlitePlugin.openDatabase({name: 'my.db', location: 'default'});

// use a specified location for iOS only
var database = window.sqlitePlugin.openDatabase({name: 'my.db', iosDatabaseLocation: 'Library'});
```

success および error コールバックパラメーターはオプションですが、問題が発生した場合に非常に役立ちます。 例：

```javascript
window.sqlitePlugin.openDatabase({name: 'my.db', location: 'default'}, function(db) {
  db.transaction(function(tx) {
    // ...
  }, function(err) {
    console.log('Open database ERROR: ' + JSON.stringify(err));
  });
});
```

### SQL トランザクション

開いているデータベースで SQL を実行します。

```javascript
database.executeSql(SQL_STATEMENT: String, [] , [successCallback], [errorCallback]);
```

**戻り値**

* `Promise`&#x20;

**例**

```javascript
database.transaction(function(transaction) {
    transaction.executeSql('SELECT count(*) AS recordCount FROM SampleTable', [], function(ignored, resultSet) {
        $('#result').text('RECORD COUNT: ' + resultSet.rows.item(0).recordCount);
    });
}, function(error) {
    alert('SELECT count error: ' + error.message);
});
```

```javascript
database.transaction(function(transaction) {
    transaction.executeSql('DELETE FROM SampleTable');
}, function(error) {
    alert('DELETE error: ' + error.message);
}, function() {
    alert('DELETE OK');
});
```

### データベースの削除

データベースオブジェクトを削除します。

```javascript
window.sqlitePlugin.deleteDatabase({name: String, [location: String], 
[iosDatabaseLocation: String]}, [successCallback], [errorCallback]);
```

**パラメーター**

| パラメーター名               | 型      | 説明                                                                                                                                                                                                                                                                                                                              |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                | String | データベースの名前                                                                                                                                                                                                                                                                                                                       |
| `location`            | String | \[オプション] データベースの場所                                                                                                                                                                                                                                                                                                              |
| `iosDatabaseLocation` | String | <p>\[オプション] iOSデータベースの場所。</p><p></p><ul><li><code>default</code>: Library/LocalDatabase サブディレクトリ - iTunes には表示されず、iCloud によってバックアップされません。</li><li><code>Library</code>: Library サブディレクトリ - iCloud によってバックアップされ、iTunes には表示されません。</li><li><code>Documents</code>: Documents サブディレクトリ - iTunesに表示され、iCloudによってバックアップされる</li></ul> |

**戻り値**

* `Promise`&#x20;

**例**

```javascript
// use the default location
window.sqlitePlugin.deleteDatabase({name: 'my.db', location: 'default'}, successcb, errorcb);

// use a specified location for iOS only
window.sqlitePlugin.deleteDatabase({name: 'my.db', iosDatabaseLocation: 'Library'});
```
