Visual Studio 2015 + cordova で SQLite を使いたい part 1

作業内容

Visual Studio から新しいプロジェクトを作る。プロジェクト テンプレートから JavaScript – Apache Cordova Apps を選ぶ

ソリューション エクスプローラーから config.xml をダブルクリックして開き、左ペインから Plugins を選ぶ。右ペインの Core から Cordova sqlite storage plugin を選び、インストールする

index.js に以下のように sqlite で DB を開く処理を加える。なおこの時インテリセンスは効かなかった。

function onDeviceReady() {
    // Handle the Cordova pause and resume events
    document.addEventListener( 'pause', onPause.bind( this ), false );
   (略)

    // 以下の一行を追加する
    var db = window.sqlitePlugin.openDatabase({ name: 'demo.db', location: 'default' });
};

環境に Windows-AnyCPU を選び、デバッグ実行する。次のエラーが出力された。

adding proxy for SQLitePlugin
OPEN database: demo.db
open db name: demo.db at full path: C:\Users\<username>\AppData\Local\Packages\io.cordova.myapp8e74f1_h35559jr9hy9m\LocalState\demo.db
OPEN database: demo.db FAILED, aborting any pending transactions
Could not open database

環境に Android を選び、実行環境に Ripple を選んで実行する。次のエラーが表示された。

SQLitePlugin.open
We seem to be missing some stuff 🙁
What is kinda cool though you can fill in the textarea to pass a json object to the callback you want to execute

環境は Android のまま、実行環境に VS Emulator または Google Android Emulator を選んで実行する。期待通りに実行された。

説明など

どういうことか。

  1. Cordova-sqlite-storage は Windows アプリケーションとして動作することをサポートしておらず、また動作しない
  2. Cordova-sqlite-storage は Java のネイティブコードを実行する。これは Ripple がサポートしておらず、また動作しない

ということ。

Cordova は Windows 上で手軽に実行を確認できてマルチプラットフォームでの開発ができることを期待して開発環境として選んだのだが、今のところエミュレータの動作が遅すぎて手軽にというわけにはいかなかった。

Windows 上でも動く、他の sqlite を使えるプラグインなりライブラリを探そうと思う。または Android の実機を用意するか、遅いエミュレーターで我慢する。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です