Base de données Web SQL HTML5

L'API Web SQL Database ne fait pas partie de la spécification HTML5, mais il s'agit d'une spécification indépendante qui introduit un ensemble d'API pour exploiter les bases de données client à l'aide de SQL.

Supposons que vous soyez un bon développeur Web, si tel est le cas, vous connaîtrez sans aucun doute bien les concepts SQL et SGBDR. Si vous avez encore besoin d'un sujet SQL, consultez nos tutoriels SQL.

Nous pouvons utiliser la base de données Web SQL dans les dernières versions de Safari, Chrome et Opera.

Méthodes de base

Voici les trois méthodes de base définies dans la spécification. Également couvert dans ce tutoriel :

openDatabase : Cette méthode crée un objet de base de données en utilisant une base de données existante ou une nouvelle base de données.

transaction : Cette méthode nous permet de contrôler une transaction et d'effectuer une validation ou une annulation en fonction de cette situation.

executeSql : Cette méthode est utilisée pour exécuter la requête SQL réelle.

Ouvrir la base de données

Si la base de données existe déjà, la méthode openDatabase se charge d'ouvrir la base de données. Si elle n'existe pas, cette méthode la créera.

Utilisez le code suivant pour créer et ouvrir une base de données :

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);

La méthode ci-dessus accepte les cinq paramètres suivants :

Nom de la base de données

Numéro de version

Texte de description

Taille de la base de données

Créer un rappel

Le dernier et cinquième paramètre, créez le le rappel sera appelé après la création de la base de données. Cependant, même sans cette fonctionnalité, le runtime créera toujours la base de données et la version correcte.

Exécuter la requête

Vous devez utiliser la fonction database.transaction() pour exécuter la requête. Cette fonction prend un paramètre, qui est une fonction responsable de l'exécution réelle de la requête, comme suit :

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024) ;
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
});

L'instruction de requête ci-dessus créera une table appelée LOGS dans la base de données 'mydb'.

Opération d'insertion

Afin de créer une entrée dans la table, nous ajoutons une simple requête SQL à l'exemple ci-dessus comme suit :

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql(' CRÉER UNE TABLE SI N'EXISTE PAS LES JOURNAUX (id unique, log)');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
tx.executeSql(' INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
});

Lors de la création d'une entrée, vous pouvez également transmettre des valeurs dynamiques comme indiqué ci-dessous :

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx .executeSql ('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); ];
});


L'e_id et l'e_log ici sont externes variables, executeSql mappera chaque entrée du paramètre du tableau à "?". Opération de lecture

Pour lire un enregistrement déjà existant, nous pouvons utiliser un rappel pour capturer le résultat comme suit :

var db = openDatabase('mydb', '1.0' , 'Test DB', 2 * 1024 * 1024);

db.transaction(function (tx) {

tx.executeSql('CREATE TABLE IF PAS EXISTE LES JOURNAUX (id unique, log)');

tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")' );
});
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [] , function (tx, results) {
var len = results.rows.length, i;
msg = "<p>Lignes trouvées : " + len + "</p>";
document.querySelector('#status').innerHTML += msg ;
for (i = 0; i < len; i++){
alert(results.rows.item(i).log );
}
}, null);
});



Exemple final

Enfin, mettons cet exemple dans un document HTML5 complet comme indiqué ci-dessous et essayez de l'exécuter dans le navigateur Safari :

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 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, "foobar")');
  tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
  msg = '<p>Log message created and row inserted.</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>Found rows: " + 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>
</head>
<body>
<div id="status" name="status">Status Message</div>
</body>
</html>

Dans la dernière version du navigateur Safari ou Opera, cela générera les résultats suivants :

Message de journal créé et ligne insérée.

Lignes trouvées : 2

foobar

logmsg




Supprimer les enregistrements

Le format utilisé pour supprimer les enregistrements est le suivant :

db.transaction(function (tx) {
tx.executSql('DELETE FROM LOGS WHERE id=1');
});

La suppression de l'identifiant de données spécifié peut également être dynamique :

db.transaction (function (tx) {
tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]);
});

Mise à jour record

Le format utilisé pour mettre à jour les enregistrements est le suivant :

db.transaction(function (tx) {
tx.executeSql('UPDATE LOGS SET log ='www.w3cschool .cc' WHERE id=2');
});

La mise à jour de l'identifiant de données spécifié peut également être dynamique :

db.transaction( function(tx) {
tx.executeSql('UPDATE LOGS SET log='www.w3cschool.cc' WHERE id=?', [id]);
});


Formation continue
||
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <script type="text/javascript"> var db = openDatabase('mydb', '1.0', 'Test DB', 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, "php中文网")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.php.cn")'); msg = '<p>数据表已创建,且插入了两条数据。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('DELETE FROM LOGS WHERE id=3'); msg = '<p>删除 id 为 3 的记录。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('UPDATE LOGS SET log=\'www.php.cn\' WHERE id=2'); msg = '<p>更新 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>查询记录条数: " + 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> </head> <body> <div id="status" name="status">状态信息</div> </body> </html>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel