0
点赞
收藏
分享

微信扫一扫

Cordova 8 架构使用sqlite

本来想现在开源产品这么多,使用sqlite应该很简单, 却走了不少弯路,特把可以成功过程在这里记录一下:

插件网址:
​​​https://github.com/litehelpers/Cordova-sqlite-storage​​

安装步骤

使用cordova plugin命令安装

cordova plugin add cordova-sqlite-storage

安装结束后,使用中会报错:
new transaction is waiting for open operation

在官方查到,这个安装后版本不是最新的。

cordova 从git安装

cordova plugin add ​​https://github.com/litehelpers/Cordova-sqlite-storage​​

运行一半,提示:
Cordova 8 架构使用sqlite_sqlite

这大概原因是git克隆网址与cordova不在一个盘上。
改用分开运行:

git clone ​​https://github.com/litehelpers/Cordova-sqlite-storage​​

也可以直接下载最新压缩包后解压。
然后手工安装
cordova plugin add 本地路径
在这之前,如果本地已经有的plugin,可以使用
cordova plugin remove 包名
进行删除。

安装plugman

官方推荐使用plugman安装。

npm install -g plugman
plugman install –platform MYPLATFORM –project path.to.my.project.folder –plugin ​​​https://github.com/litehelpers/Cordova-sqlite-storage​​

其中platform可能是以下值:
- android
- ios
- windows
- wp8

代码示例

当使用预先设置的数据库时,要把自己的数据库放在www根目录下,并且打开数据库时,设置createFromLocation值为1。需要注意的时候,如果测试时自动复制到android的/data/data/应用程序名/databases下失败了,那把app 卸载后再试,不要直接覆盖安装。

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

cordova-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 的cordova项目,如果使用了sqlite,可能会报错。

The library 'sqlite-native-driver.jar' contains native libraries that will not run on the device.

这时候可以从官网下载源码,找到sqlite-connector.jar
Cordova 8 架构使用sqlite_cordova_02

替换项目libs里原有的jar文件。
如果还不行,就这样操作:
把sqlite-native-driver.jar用winrar解压,把libs里的内容复制到android/libs下,删除sqlite-native-driver.jar,clean 项目,再运行程序测试。


举报

相关推荐

0 条评论