使用用户设置创建 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、SQLite 和全文搜索

是否可以使用 Phonegap 获取 iOS 应用推送设置?

带有 SQLite 插件的 Phonegap 预填充 SQLite 数据库?与Phonegap 1.2 兼容吗?

在 PhoneGap 中使用 JavaScript 创建和使用 iOS settings.bundle 值

如何从sqlite +phonegap中的表中获取第一列名称