Base de données Web SQL HTML5

Base de données HTML5 Web SQL

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.

Si vous êtes un programmeur web backend, il devrait être facile de comprendre les opérations SQL.

Vous pouvez également vous référer à notre tutoriel SQL pour en savoir plus sur les opérations de base de données.

La base de données Web SQL peut fonctionner dans les dernières versions des navigateurs Safari, Chrome et Opera.

Méthodes de base

Les Voici les trois méthodes principales définies dans la spécification :

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, ceci. la méthode le 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, le rappel de création 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

L'exécution de requêtes nécessite l'utilisation de la fonction database.transaction(). Cette fonction nécessite un paramètre, qui est une fonction responsable de l'exécution réelle de la requête, 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'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('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")');
});

Vous pouvez également la transmettre lorsque créer une entrée 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)');
  tx.executeSql('INSERT INTO LOGS 
                        (id,log) VALUES (?, ?'), [e_id, e_log];
});

Ici, e_id et e_log sont des variables externes, 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 ceci :

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)');
   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>Found rows: " + len + "</p>";
   document.querySelector('#status').innerHTML +=  msg;
   for (i = 0; i < len; i++){
      alert(results.rows.item(i).log );
   }
 }, null);
});

Exemple final

<!DOCTYPE HTML>
<html>
   <head>
      <meta charset="UTF-8">
      <title>web SQL</title> 
      <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, "")');
            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('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>

Supprimer les enregistrements

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

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

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

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

Mettre à jour l'enregistrement

Le format utilisé pour mettre à jour l'enregistrement 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"> <title>web SQL</title>  <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")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (3, "www.ask.php.cn")'); msg = '<p>数据表已创建,且插入了两条数据。</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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!