English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Il Web SQL Database di HTML5 (database locale html5) è davvero invitante, quando scopri che puoi utilizzare query di ricerca come quelle di MySQL per operare sul database locale, trovi che è piuttosto interessante. Oggi, scopriamo insieme l'API Web SQL Database di HTML 5: openDatabase, transaction, executeSql.
WebSQL è un modulo indipendente in front-end, è uno dei metodi di archiviazione Web, lo vediamo spesso durante il debug, ma non viene utilizzato molto.
Se sei un programmatore backend Web, dovrebbe essere facile capire le operazioni SQL.
Il database Web SQL può funzionare nei browser più recenti Safari, Chrome e Opera.
Di seguito sono riportati i tre metodi core definiti nella specifica:
openDatabase: questo metodo utilizza un database esistente o crea un nuovo database per creare un oggetto database.
transaction: questo metodo ci permette di controllare una transazione e di eseguire un commit o un rollback in base a questa situazione.
executeSql: questo metodo viene utilizzato per eseguire query SQL reali.
Possiamo utilizzare la funzione openDatabase() per aprire un database esistente, se il database non esiste, verrà creato un nuovo database, come segue:
var db = openDatabase('testdb', '1.0', 'Test WebDB', 2 * 1024 * 1024);
La descrizione dei cinque parametri della funzione openDatabase():
Nome del database
Versione
Testo di descrizione
Dimensione del database
Callback di creazione
Il quinto parametro, la callback di creazione verrà chiamata dopo la creazione del database.
Eseguire l'operazione utilizzando la funzione database.transaction():
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <script> var db = openDatabase('testdb', '1.0', 'Test WebDB', 2 * 1024 * 1024); db.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); }); </script> </body> </html>
Dopo l'esecuzione della dichiarazione sopra, verrà creata una tabella chiamata LOGS nel database 'testdb'.
Dopo aver eseguito la dichiarazione di creazione della tabella sopra, possiamo inserire alcuni dati:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <script> var db = openDatabase('testdb', '1.0', 'Test WebDB', 2 * 1024 * 1024); db.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, \ tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, \ }); </script> </body> </html>
Possiamo anche utilizzare valori dinamici per inserire dati:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <script> var db = openDatabase('testdb', '1.0', 'Test WebDB', 2 * 1024 * 1024); db.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?,?)', [e_id, e_log]); }); </script> </body> </html>
In questo esempio, e_id e e_log sono variabili esterne, executeSql mappa ogni voce dell'array di parametri a "?".
Di seguito sono riportati alcuni esempi su come leggere i dati già esistenti nel database:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <script> var db = openDatabase('testdb', '1.0', 'Test WebDB', 2 * 1024 * 1024); db.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, \ tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, \ }); db.transaction(function(tx) { tx.executeSql('SELECT * FROM LOGS', [], function(tx, results) { var len = results.rows.length, i; msg = "<p>Numero di record di ricerca: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ alert(results.rows.item(i).log); } }, null); }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <script> var db = openDatabase('testdb', '1.0', 'Test WebDB', 2 * 1024 * 1024); var msg; db.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, \ tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, \ msg = '<p>La tabella è stata creata e sono stati inseriti due record.</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function(tx) { tx.executeSql('SELECT * FROM LOGS', [], function(tx, results) { var len = results.rows.length, i; msg = "<p>Numero di record di ricerca: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; document.querySelector('#status').innerHTML += msg; } }, null); }); </script> <div id="status" name="status">Informazioni di Stato</div> </body> </html>Testa e guarda ‹/›
I risultati dell'esempio sopra riportato sono illustrati nella figura seguente:
Il formato utilizzato per eliminare i record è il seguente:
db.transaction(function(tx) { tx.executeSql('DELETE FROM LOGS WHERE id=1'); });
Eliminare i dati specifici di id può essere dinamico:
});
db.transaction(function(tx) { tx.executeSql('UPDATE LOGS SET log=\ });
tx.executeSql('UPDATE LOGS SET log=\ });
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <script> var db = openDatabase('testdb', '1.0', 'Test WebDB', 2 * 1024 * 1024); var msg; db.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, \ tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, \ msg = '<p>La tabella è stata creata e sono stati inseriti due record.</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function(tx) { tx.executeSql('DELETE FROM LOGS WHERE id=1'); msg = '<p>Eliminazione del record con id 1.</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function(tx) { tx.executeSql('UPDATE LOGS SET log=\ msg = '<p>Aggiornamento del record con id 2.</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function(tx) { tx.executeSql('SELECT * FROM LOGS', [], function(tx, results) { var len = results.rows.length, i; msg = "<p>Numero di record di ricerca: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; document.querySelector('#status').innerHTML += msg; } }, null); }); </script> <div id="status" name="status">Informazioni di Stato</div> </body> </html>Testa e guarda ‹/›
I risultati dell'esempio sopra riportato sono illustrati nella figura seguente: