在PhoneGap应用程序中,我们可以利用一款名叫Cordova-SQLitePlugin的插件来方便的操作基于浏览器内置数据库或独立的SQLite数据库文件,此插件的基本信息:
1.项目地址:https://github.com/brodysoft/Cordova-SQLitePlugin
2.项目讨论组:https://groups.google.com/forum/#!forum/Cordova-SQLitePlugin
3.有用的参考文章:http://yeti.mtm.net.cn/?p=1437
以下是我利用Cordova3.5.0创建的Android工程利用此插件的过程:
1.创建工程testDb:
cordova create testSQLite com.me.testSQLite testDb
2.添加Android工程:
cd testSQLite
cordova platform add android
3.编译此工程:
cordova build
4.配置Cordova-SQLitePlugin插件:
从https://github.com/brodysoft/Cordova-SQLitePlugin下载下来的压缩包中有以下内容:
www/SQLitePlugin.js:此文件要在.HTML中用到。
src/android/org/pgsqlite/SQLitePlugin.java:此文件由PhoneGap引用。
在我们的Android工程中的配置文件“platforms/android/res/xml/config.xml”中加入此插件的配置项:
<feature name="SQLitePlugin">
<param name="android-package" value="org.pgsqlite.SQLitePlugin" />
</feature>
然后把www/SQLitePlugin.js拷贝到Android工程中的www文件夹中,并且把src/android/org/pgsqlite/SQLitePlugin.java拷贝到Android工程中的
"plugins/org/pgsqlite.SQLitePlugin.java"。不出意外的话,插件就配置好了。
5.修改Android工程中www目录下的index.html文件,用于测试看插件是否正常工作了,我的测试代码如下:
<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<meta name="msapplication-tap-highlight" content="no" />
<title>Hello World</title>
</head>
<body>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">这里是我的测试内容</p>
<p class="event received">Device is Ready,goooooooooooooool</p>
</div>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" charset="utf-8" src="SQLitePlugin.js"></script>
<script type="text/javascript">
// Wait for Cordova to load
document.addEventListener("deviceready", onDeviceReady, false); // Cordova is ready
function onDeviceReady() {
alert( 'hello world!' );
console.log( "准备要打开数据库了!" );
var db = window.sqlitePlugin.openDatabase({name: "my.db"}); db.transaction(function(tx) {
tx.executeSql('DROP TABLE IF EXISTS test_table');
tx.executeSql('CREATE TABLE IF NOT EXISTS test_table (id integer primary key, data text, data_num integer)');
console.log( "正在执行数据库操作!" );
// demonstrate PRAGMA:
db.executeSql("pragma table_info (test_table);", [], function(res) {
console.log("PRAGMA res: " + JSON.stringify(res));
}); tx.executeSql("INSERT INTO test_table (data, data_num) VALUES (?,?)", ["test", 100], function(tx, res) {
console.log("insertId: " + res.insertId + " -- probably 1");
console.log("rowsAffected: " + res.rowsAffected + " -- should be 1"); db.transaction(function(tx) {
tx.executeSql("select count(id) as cnt from test_table;", [], function(tx, res) {
console.log("res.rows.length: " + res.rows.length + " -- should be 1");
console.log("res.rows.item(0).cnt: " + res.rows.item(0).cnt + " -- should be 1");
});
}); }, function(e) {
console.log("ERROR: " + e.message);
});
}); console.log( "结束操作数据库!" );
}
</script>
</body>
</html>
6.然后再次编译一下:
cordova build
用eclipse打开此Android工程,编译,运行,在调试信息中可以看到操作数据库的相应日志内容,就说明插件已经生效了。
这里默认的是使用浏览器中的内置数据库,此插件也可以用于操作拷贝到PhoneGap应用程序中的独立SQLite数据库文件。
可以参考此文章:http://yeti.mtm.net.cn/?p=1437
PhoneGap,Cordova[3.5.0-0.2.6]:利用插件Cordova-SQLitePlugin来操作SQLite数据库的更多相关文章
-
【Android】13.0 第13章 创建和访问SQLite数据库&mdash;本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 Android 内置了三种数据存取方式:SQLite数据库.文件.SharedPreferences. 这一章我们 ...
-
Windows8下PhoneGap 4 + Android Studio 1.0 + VS2013配置指南
1.准备工作 安装JDK1.6+,设置环境变量 JAVA_HOME C:\Program Files\Java\jdk1.5.0_07 CLASSPATH .;%JAVA_HOME%\lib Path ...
-
cordova+Android Studio 1.0+ionic+win7(转)
转自http://blog.csdn.net/fuyunww/article/details/42216125 目录(?)[-] 在项目目录下执行 a创建工程 b添加平台支持 c添加插件在Androi ...
-
如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
前提 Cordova Android 7.0.0开始改变了项目安卓平台的架构.新建一个空项目分别添加Android 6.4.0 和 Android 7.0.0平台: cordova platform ...
-
cordova crosswalk android 7.0 问题
带有crosswalk的cordova app 在Android7.0会闪退问题,为什么要crosswalk,我的回答是,还tmd不是要兼容5.0以下系统(4.4,4.2,4.0),这里省略100 ...
-
第三步 Cordova 3.0(及以上版本) 添加插件
1.使用命令生成项目 例:cordova create jy110 com.example.jy110 jy110 2.使用命令添加插件(如果报错,可能是网络问题,可以多试几次,直到成功) 例:cor ...
-
[Phonegap+Sencha Touch] 移动开发76 让cordova app訪问远端站点也能调用cordova插件功能
原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50735395 我相信.应该会有一些cordova开发人员想过实现以下这种app: 使用 ...
-
解决android sdk 运行出现 could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:的问题
ionic3项目,在添加android平台后,cordova run android 出现 以下问题: error: could not install *smartsocket* listener: ...
-
Castle Core 4.0.0 alpha001发布
时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...
随机推荐
-
Dynamics CRM 之ADFS 使用 WID 和代理的联合服务器场
为此部署拓扑 Active Directory 联合身份验证服务 (AD FS) 等同于联合服务器场与 Windows 内部数据库 (WID) 拓扑中,但它将代理服务器计算机添加到外围网络,以支持外部 ...
-
centos6.4 搭建svn服务器
SVN作为新一代代码版本管理工具,有很多优点,管理方便,逻辑明确,安全性高,代码一致性高.SVN数据存储有两种方式,BDB(事务安全表类型)和FSFS(一种不需要数据库的存储系统),为了避免在服务器连 ...
-
Lvs原理
官方文档: http://www.linuxvirtualserver.org/zh/lvs1.html http://www.linuxvirtualserver.org/zh/lvs2.html ...
-
NSLineBreakMode
typedef enum { UILineBreakModeWordWrap = 0, UILineBreakModeCharacterWrap, UILineBreakModeCl ...
-
配置nginx为HTTPS服务器
默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这 ...
-
Client与Server
监听套接字,通讯套接字,初始化网卡,多线程.想查自己的IP,ipconfig 服务端 #include "stdafx.h" #include <WinSock2.h> ...
-
Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能
都说语音是人机交互的重要手段,虽然个人觉得在大庭广众之下,对着手机发号施令会显得有些尴尬.但是在资源受限的物联网应用场景下(无法外接鼠标键盘显示器),如果能够通过语音来控制设备,与设备进行交互,那还是 ...
-
python3进阶之推导式之列表(list)推导式(comprehensions)
1.前言 推导式,英文名字叫comprehensions,注意与comprehension(理解)只有s字母之差.推导式又可以叫解析式,推导式可以从一种数据序列构建新的数据序列的结构体.推导式分为,列 ...
-
关于多条数据转为json格式单次传输的问题 2017.05.27
数据形式如下: var mycars = [];//定义数组存放多条数据 for(var i=0;i<2;i++){ var jsonData = {};//定义变量存放单条数据 jsonDat ...
-
VS code 配置C++编译环境
主要参考链接:https://blog.csdn.net/bat67/article/details/76095813 另外有如下几处需要注意的地方: (1) 这部需要提前“run build tas ...