HTML 5 SQLite 离线数据库

Posted

技术标签:

【中文标题】HTML 5 SQLite 离线数据库【英文标题】:HTML 5 SQLite Offline DB 【发布时间】:2011-02-26 16:14:52 【问题描述】:

我一直在学习本教程:http://www.mobilehtml5.com/post/401111526/tutorial-your-first-mobile-html5-app-offline-storage

我一直在使用它创建一个简单的数据库来记录街机中的钱,并使用一个表格存储每台机器的名称和金额。

我的问题是我不知道轻松编辑行的最佳方法? html5rocks.com 给了我一些想法,但都不合适。

任何人都可以让我走上正确的轨道吗?我不知道正确的方法,是否有某种游标类型的方法?还是我应该有一个循环将值加载到输入表单框中,然后更新这些?

任何帮助都会很棒,我已经包含了下面的代码,所以你可以看到我在做什么。

<!DOCTYPE html> 
<html>  
<head>
<title>Machine Total Calculator</title>
<script src="http://www.google.com/jsapi"></script>
<script>
  google.load("jquery", "1.4.1");
</script>
<script>

  var db = window.openDatabase("Machines", "", "Arcade Machines", 1024*1000);

 function insertMachine(name, amount) 
   db.transaction(function(tx) 
      tx.executeSql('INSERT INTO groupOne (name, amount) VALUES (?, ?)', [name,     amount]);
   );
  

   function renderResults(tx, rs) 
    e = $('#status');
    e.html("");
    for(var i=0; i < rs.rows.length; i++) 
      r = rs.rows.item(i);
      e.html(e.html() + 'id: ' + r['id'] + ', Name: ' + r['name'] + ', Amount: ' +  r['amount'] + '<br>');
    
  


  function renderRecords(name) 
    db.transaction(function(tx) 

        tx.executeSql('SELECT * FROM groupOne', [], renderResults);

    );
  


  $(document).ready(function() 
    db.transaction(function(tx) 
      tx.executeSql('CREATE TABLE IF NOT EXISTS groupOne(id INTEGER PRIMARY KEY, name  TEXT, amount DECIMAL)', []);
    );


$('#machine_form').submit(function() 
insertMachine($('#name').val(), $('#amount').val());

     renderRecords();
     return false;
);


renderRecords();
);
</script>
</head>
<body>
<form method="get" id="machine_form">
  <div>
    <input type="name" id="name" placeholder="Enter Machine Name" size="30"/>
    <input type="number" current id="amount" placeholder="Amount" name="amount"  size="15" />
    <input type="submit" value="Add Machines" />
  </div>
</form>
<div id="status">
</div>
</body>
</html> 

【问题讨论】:

【参考方案1】:

据我了解您的问题:您必须使用与例如相同的方式在 php+mysql 中。您必须将整个记录逐个值加载到 INPUTs 中,记住记录的 ID(例如在隐藏的 INPUT 中)。在某些 UPDATE 按钮的 onclick 事件处理程序中,您获取这些值以及 ID,并安排 SQL UPDATE 查询(“UPDATE groupOne SET name=..., value=... WHERE id=...”)

不,此 SQL 中没有“游标方式”。只需记住记录的 ID 并在 UPDATE 的 WHERE 子句中使用即可。

【讨论】:

好的,所以我正在考虑在打印行的位置添加一个按钮,该按钮将 id 传递给更新函数并添加在其中编辑和更新的能力?我试过这个,但 id 不会传递给函数: e.html(e.html() + 'id: ' + r['id'] + ', Name: ' + r['name'] + ', 金额:' + r['amount'] + 'e' + ' ');

以上是关于HTML 5 SQLite 离线数据库的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发数据库篇—SQLite简单介绍

HTML5 离线存储之Web SQL

iOS开发数据库篇—SQLite简单介绍

有没有办法在 iPhone 的离线 openstreetmaps sqlite 地图瓦片数据库上实现离线地理编码?

SQLite 和 Firebase 数据库之间的同步,当用户离线数据存储在 sqlite 和在线数据存储在 firebase 时

如何使用Flutter将数据SQLite(离线)发送到服务器MySQL?