使用用户设置创建 PhoneGap SQLite DB
Posted
技术标签:
【中文标题】使用用户设置创建 PhoneGap SQLite DB【英文标题】:Creation of PhoneGap SQL Lite DB with user settings 【发布时间】:2013-05-23 10:01:03 【问题描述】:我正在尝试创建我的第一个 phonegap 应用程序(针对 ios)。 该应用程序的目的非常简单,但我在使用 SQL Lite 数据库时遇到了一些错误。 目标只是将用户的一些设置保存在数据库中,然后根据它显示一些一般统计信息。 所以应用程序应该能够插入/更新用户设置(性别、县、年龄)。 数据库最终应该是一个全局数据库,包含所有用户输入,然后基于此显示统计信息 - 但对于我正在制作的原型,本地数据库就可以了。
从在线教程中创建/插入/更新/选择数据库的代码对我来说看起来不错,但实际上什么也没发生。我什至不确定数据库是否真的创建了,这应该是根据 phonegap 文档?
// 脚本代码 //
var db;
var shortName = 'WebSqlDB';
var version = '1.0';
var displayName = 'WebSqlDB';
var maxSize = 200000;
function onDeviceReady()
var db = window.openDatabase(shortName, version, displayName, maxSize);
function errorHandler(transaction, error)
alert('Error: ' + error.message + ' code: ' + error.code);
function successCallBack()
alert("DEBUGGING: success");
init()
alert("DEBUGGING: we are in the onBodyLoad() function");
if (!window.openDatabase)
alert('Databases are not supported in this browser.');
return;
db.transaction(function(tx)
tx.executeSql( 'CREATE TABLE IF NOT EXISTS User(UserId INTEGER NOT
NULL PRIMARY KEY, County TEXT NOT NULL, Gender TEXT NOT NULL, Age INTEGER NOT NULL)', [],nullHandler,errorHandler);
,errorHandler,successCallBack);
$('#lbUsers').html('');
db.transaction(function(transaction)
transaction.executeSql('SELECT * FROM User;', [],
function(transaction, result)
if (result != null && result.rows != null)
for (var i = 0; i < result.rows.length; i++)
var row = result.rows.item(i);
$('#lbUsers').append('<br>' + row.UserId + '. ' +
row.County + ' ' + row.Gender + ' ' + row.Age);
,errorHandler);
,errorHandler,nullHandler);
return;
function AddValueToDB()
if (!window.openDatabase)
alert('Databases are not supported in this browser.');
return;
db.transaction(function(transaction)
transaction.executeSql('INSERT INTO User(County, Gender, Age)
VALUES (?,?,?)',[$('#txCounty').val(), $('#txGender').val(), $('#txAge').val()],
nullHandler,errorHandler);
);
ListDBValues();
return false;
// HTML 代码 //
<form>
<label for="county">County:</label>
<input id="txCounty" type="text" name="county" id="county" value="" placeholder="County" />
<fieldset data-role="controlgroup" data-type="horizontal">
<legend>Gender:</legend>
<input type="radio" name="radio-choice-h-2" id="radio-choice-h-2a" value="male" checked="checked">
<label for="radio-choice-h-2a">Male</label>
<input type="radio" name="radio-choice-h-2" id="radio-choice-h-2b" value="female">
<label for="radio-choice-h-2b">Female</label>
</fieldset>
<label for="age">Age:</label>
<input type="number" name="age" id="txAge" value="" placeholder="Age" />
<input type="button" value="Add record" onClick="AddValueToDB()">
<input type="button" value="Refresh" onClick="ListDBValues()">
</form>
<span style="font-weight:bold;">Currently stored values:</span>
<span id="lbUsers"></span>
在控制台中,它显示“未定义 ListDBValues、AddValueToDB 和 init”。 我知道我把 init 作为我的 onDeviceReady .. 我真的需要一些指导方针!非常感激! :)
【问题讨论】:
【参考方案1】:使用 lint 检查您的 javascript:http://www.javascriptlint.com/
$ jsl process yourcode.js
phonegap js 静默失败,lint 可以帮助您调试代码。
【讨论】:
以上是关于使用用户设置创建 PhoneGap SQLite DB的主要内容,如果未能解决你的问题,请参考以下文章
如何在 phonegap xcode 中创建 sqlite 数据库?
是否可以使用 Phonegap 获取 iOS 应用推送设置?
带有 SQLite 插件的 Phonegap 预填充 SQLite 数据库?与Phonegap 1.2 兼容吗?