【问题标题】:HTML5SQL retrieve records from web databases using SELECT statementsHTML5SQL 使用 SELECT 语句从 Web 数据库中检索记录
【发布时间】:2011-12-31 13:16:05
【问题描述】:

我正在使用 jquery mobile/phonegap 创建一个 iphone webapp,并且我正在尝试使用 web 数据库。我有大约 700 条记录要插入,并且希望有一个带有 sql 语句的单独文件来创建表并在应用程序运行的第一次插入记录。我决定使用一个名为 html5sql 的小型 javascript 模块,因为它让我能够在一个事务中执行多个 sql 语句。

例如我可以执行

sql = "CREATE TABLE milestones ( 
       ID       INT( 10 )        NOT NULL,
       Title    VARCHAR( 50 )    DEFAULT NULL,
       mYear    INT( 11 )        NOT NULL);
       INSERT INTO `milestones` VALUES ('2', 'Cotton Mather', '1721');";

使用

 html5sql.process(sql, function(){ //Success}, function(error, failingQuery){//Failure});

而不是

transaction.executeSql('CREATE TABLE milestones (ID INT( 10 ) NOT NULL, Title VARCHAR(50 )    DEFAULT NULL, mYear    INT( 11 )        NOT NULL);', [], nullDataHandler, errorHandler); 
transaction.executeSql('INSERT INTO [milestones] ([ID], [Title], [mYear]) VALUES (2, "Cotton Mather", "1721");', [], nullDataHandler, errorHandler); 

htlm5sql 的问题在于它们没有任何关于如何使用 process 函数和 SELECT 语句从数据库中检索信息并将结果显示在 div 块中的信息。

here is the only short guide for html5sql

谁能帮我解决这个问题?

【问题讨论】:

    标签: javascript jquery sqlite html web-storage


    【解决方案1】:

    当然。使用 html5sql 选择数据非常简单,可以通过以下简单的方式完成:

    html5sql.process(
        ["SELECT * FROM milestones;"],
        function(transaction, results, rowsArray){
          for(var i = 0; i < rowsArray.length; i++){
            //each row in the rowsArray represents a row retrieved from the database
            var id = rowsArray[i].ID;
            var Title = rowsArray[i].Title;
            var mYear = rowsArray[i].mYear;
            console.log("Retrieved Milestone: "+id+" - "+Title+" "+mYear);
          }
        },
        function(error, statement){
          //hande error here           
        }
    );
    

    如果您想要更深入的示例,我不久前创建了一个 jsfiddle,其中包含实际工作代码,显示了创建和填充数据库,然后选择和检索数据的整个过程。

    作为 html5sql 的作者,我为缺乏文档表示歉意。我正在努力改进网站上的文档,并添加更多关于如何做事的活生生的例子。

    【讨论】:

    • 太棒了!感谢您的精彩模块。我希望你能在文档上做更多的工作。祝你好运!
    • Ken... 有没有办法用你的插件进行参数化查询?例如,如果我想添加一个 WHERE 子句说“WHERE mYear >=?”然后有一个值来填充?再次感谢。
    • 是的,但是您使用 SQL 对象而不是仅作为字符串传递您的 SQL 语句,并为数据数组设置一个值。我已经更改了上面提到的jsfiddle,以说明我的意思,您可以查看here
    【解决方案2】:

    我花了很长时间才弄明白。你真的应该在你的文档中为选择结果添加第三个参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多