- From: poot <cvsmail@w3.org>
- Date: Tue, 18 Aug 2009 10:13:53 +0900 (JST)
- To: public-html-diffs@w3.org
hixie: Add some example code in the intro. (whatwg r3650) http://dev.w3.org/cvsweb/html5/webdatabase/Overview.html?r1=1.13&r2=1.14&f=h http://html5.org/tools/web-apps-tracker?from=3649&to=3650 =================================================================== RCS file: /sources/public/html5/webdatabase/Overview.html,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- Overview.html 17 Aug 2009 23:01:59 -0000 1.13 +++ Overview.html 18 Aug 2009 01:13:31 -0000 1.14 @@ -168,7 +168,7 @@ <h1>Web Database</h1> <!--ZZZ:--> <!--<h2 class="no-num no-toc">W3C Working Draft 23 April 2009</h2>--> - <h2 class="no-num no-toc" id="editor-s-draft-date-1-january-1970">Editor's Draft 17 August 2009</h2> + <h2 class="no-num no-toc" id="editor-s-draft-date-1-january-1970">Editor's Draft 18 August 2009</h2> <!--:ZZZ--> <dl><!-- ZZZ: update the month/day (twice), (un)comment out <dt>This Version:</dt> @@ -235,7 +235,7 @@ specification's progress along the W3C Recommendation track. <!--ZZZ:--> <!--This specification is the 23 April 2009 Working Draft.--> - This specification is the 17 August 2009 Editor's Draft. + This specification is the 18 August 2009 Editor's Draft. <!--:ZZZ--> </p><!-- required patent boilerplate --><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>. W3C maintains a <a href="http://www.w3.org/2004/01/pp-impl/42538/status" rel="disclosure">public list of @@ -283,7 +283,73 @@ * deleting databases * determining how much storage room is left * handling the database getting corrupted - --><h2 id="introduction"><span class="secno">1 </span>Introduction</h2><p><i>This section is non-normative.</i><p class="XXX">...</p><!-- include an example that does something like the following to show + --><h2 id="introduction"><span class="secno">1 </span>Introduction</h2><p><i>This section is non-normative.</i><p>This specification introduces a set of APIs to manipulate + client-side databases using SQL.<p>The API is asynchronous, so authors are likely to find anonymous + functions (lambdas) very useful in using this API.<p>Here is an example of a script using this API. First, a function + <code title="">prepareDatabase()</code> is defined. This function + tries to create the database if necessary, giving it one table + called "docids" with two columns ("id" and "name"). If it is + successful, or if the table doesn't need creating, it calls a + section function, <code title="">getDatabase()</code>, which obtains + a handle to the database, and then calls the function to do the + actual work, in this case <code title="">showDocCount()</code>.<pre>function prepareDatabase(ready, error) { + // first open the database with no version to see if it exists + var db = openDatabase('documents', '', 'Offline document storage', 5*1024*1024); + if (db.version == '') { + // database didn't exist + db.changeVersion('', '1.0', function (t) { + // create the tables + t.executeSql('CREATE TABLE docids (id, name)'); + }, function (e) { + // in case of error: + if (db.version == '1.0') { + // the database got upgraded while we were trying to do it. + // (there's a race condition between us checking db.version and + // calling changeVersion(), so this is possible if the user opened this + // page twice at the same time) + // let's try reopening it + getDatabase(ready, error); + } else { + // some other error occurred + error(e); + } + }, function () { + // in case of success: + getDatabase(ready, error); + }); + } else { + getDatabase(ready, error); + } +} + +function getDatabase(ready, error) { + try { + ready(openDatabase('documents', '1.0', 'Offline document storage', 5*1024*1024); + } catch (e) { + error(e); + } +} + +function showDocCount(db, span) { + db.readTransaction(function (t) { + t.executeSql('SELECT COUNT(*) FROM docids', [], function (t, r) { + span.textContent = rows.count; + }, function (t, e) { + // couldn't read database + span.textContent = '(unknown: ' + e.message + ')'; + }); + }); +} + +prepareDatabase(function(db) { + // got database + var span = document.getElementById('doc-count'); + showDocCount(db, span); +}, function (e) { + // error getting database + alert(e.message); +});</pre><!-- XXX +include an example that does something like the following to show you should never embed strings straight into the statement, even when you have a variable and unknowable number of literals coming: var q = "";
Received on Tuesday, 18 August 2009 01:14:30 UTC