Android開発シリーズ13 Cordovaアーキテクチャはsqliteを使用しています.

6139 ワード

今はオープンソースの製品が多いと思いますが、sqliteを使うのは簡単です.いろいろな回り道をしました.ここで成功過程を記録してみます.
プラグインのURL:https://github.com/litehelpers/Cordova-sqlite-storage
インストール手順
cordva pluginコマンドでインストールします.
cordva plugin add codova-sqlite-storge
インストールが完了したら、使用中にエラーが発生します.new traction is waiting for open operation
公式で確認しましたが、このインストール後のバージョンは最新のものではありません.
corddovaはgitからインストールします.
cordva plugin addhttps://github.com/litehelpers/Cordova-sqlite-storage
半分実行します.ヒント:
これはおそらく、gitクローンアドレスとcodovaが同じディスクにないからです.分離運転に切り替える:
git clonehttps://github.com/litehelpers/Cordova-sqlite-storage
最新の圧縮パッケージを直接ダウンロードして解凍することもできます.その後、cordva plugin addを手動でインストールし、これまでにローカルに既にあったpluginであれば、cordva plugin removeパッケージ名を使用して削除することができます.
plugmanをインストール
公式推奨はplugmanでインストールします.
npm install-g plugman plugman install–plotform MYPLART FORM–project path.to.my.project.folder-pluginhttps://github.com/litehelpers/Cordova-sqlite-storage
その中のplotformは以下の値かもしれません.-android-ios-windows-wp 8
コードの例
予め設定したデータベースを使う場合、wwwルートディレクトリの下に自分のデータベースを置き、データベースを開く場合、createFroom Locationの値を1に設定します.注意する必要がある場合、テスト時に自動的にandroidの/data/data/アプリケーション名/databasesにコピーして失敗したら、アプリをアンインストールしてから試してみてください.直接にインストールを上書きしないでください.

    var options={
        name: "datas.db",createFromLocation: 1
    };

    function errorCB(err){
        console.log('errorCB:',err);
    }
function queryDB(tx){
            console.log('queryDB in function:getWikiCategories');
            tx.executeSql('select * FROM km_types WHERE parent_id=0',[],querySuccess,errorCB);
        }
        function querySuccess(tx,result){
console.log(tx,result);
            if(!result.rowsAffected){
                return false;
            }
            if(callback)callback(result);
        }
        var db=window.sqlitePlugin.openDatabase(options);
        db.transaction(queryDB,errorCB);
Tips
cordva-plugin-dbcopyは、別のプリセットデータベースをシステムディレクトリにコピーするツールです.必要ではないです.
https://github.com/an-rahulpandey/cordova-plugin-dbcopy
function dbcopy()
{
        //Database filename to be copied is demo.db

        //location = 0, will copy the db to default SQLite Database Directory
        window.plugins.sqlDB.copy("demo.db", 0, copysuccess,copyerror);

        or

        //location = 1, will copy the database to /Library folder
        window.plugins.sqlDB.copy("demo.db", 1, copysuccess,copyerror);

        or

        //location = 2, will copy the database to /Library/LocalDatabase folder (Disable iCloud Backup)
        window.plugins.sqlDB.copy("demo.db", 2, copysuccess,copyerror);

}

function removeDB()
{
      var location = 1;
      window.plugins.sqlDB.remove("demo.db", location, rmsuccess,rmerror); 
}

function copysuccess()
{
        //open db and run your queries
         db = window.sqlitePlugin.openDatabase({name: "demo.db"});.
}

function copyerror(e)
{
        //db already exists or problem in copying the db file. Check the Log.
        console.log("Error Code = "+JSON.stringify(e));
        //e.code = 516 => if db exists
}
Eclipseを使ってandroidのcordvaプロジェクトを開けます.sqliteを使ったら、エラーが出るかもしれません.
The library 'sqlite-native-driver.jar' contains native libraries that will not run on the device.
この時はホームページからソースをダウンロードできます.sqlite-connector.jarを見つけます.
プロジェクトlibsに既存のjarファイルを差し替えます.もしまだだめなら、このように操作します.sqlite-native-driver.jarをwindrarで解凍して、libsの内容をandroid/libsにコピーして、sqlite-native.jarを削除して、cleanプロジェクトを実行します.