


Explication détaillée de l'utilisation de la base de données indexeddb
Cette fois, je vais vous apporter une explication détaillée de l'utilisation de la base de données indexeddb. Quelles sont les précautions lors de l'utilisation de la base de données indexeddb. Ce qui suit est un cas pratique, jetons un coup d'œil.
Avant-propos
Dans le stockage local de HTML5, il existe une base de données appelée indexedDB, qui est une base de données NoSQL stockée localement sur le client. Elle peut stocker beaucoup de choses. données. D'après l'article précédent : HTML5 Advanced Series : Web Storage, nous savons que le stockage Web peut accéder localement à des données simples de manière pratique et flexible, mais pour une grande quantité de stockage structuré, les avantages d'indexedDB sont encore plus évidents. Voyons ensuite comment indexedDB stocke les données.
Se connecter à la base de données
Un site Web peut avoir plusieurs bases de données indexées DB, mais le nom de chaque base de données est unique. Nous devons nous connecter à une base de données spécifique via le nom de la base de données.
var request = indexedDB.open('dbName', 1); // 打开 dbName 数据库 request.onerror = function(e){ // 监听连接数据库失败时执行 console.log('连接数据库失败'); } request.onsuccess = function(e){ // 监听连接数据库成功时执行 console.log('连接数据库成功'); }
Nous utilisons la méthode indexedDB.open pour nous connecter à la base de données. Cette méthode reçoit deux paramètres, le premier est le nom de la base de données et le second est le numéro de version de la base de données. Cette méthode renvoie un objet IDBOpenDBRequest, représentant un objet de requête pour se connecter à la base de données. Nous pouvons définir les méthodes à exécuter si la connexion réussit ou échoue en écoutant les événements onsuccess et onerror de l'objet requête.
Étant donné que l'API indexedDB ne permet pas à l'entrepôt de données de la base de données de changer dans la même version, vous devez transmettre un nouveau numéro de version dans la méthode indexedDB.open pour mettre à jour la version afin d'éviter des modifications répétées de la base de données dans la même version. Le numéro de version doit être un entier !
var request = indexedDB.open('dbName', 2); // 更新版本,打开版本为2的数据库 // ... request.onupgradeneeded = function(e){ console.log('新数据库版本号为=' + e.newVersion); }
Nous définissons la méthode à exécuter lors de la mise à jour de la version de la base de données en écoutant l'événement onupgradeneeded de l'objet requête.
Fermez la base de données
Après une connexion réussie à la base de données à l'aide de indexedDB.open, un objet IDBOpenDBRequest sera renvoyé Nous pouvons appeler la méthode close de cet objet pour fermer. la base de données.
var request = indexedDB.open('dbName', 2); // ... request.onsuccess = function(e){ console.log('连接数据库成功'); var db = e.target.result; db.close(); console.log('数据库已关闭'); }
Supprimer la base de données
indexedDB.deleteDatabase('dbName'); console.log('数据库已删除');
Créer un objetEntrepôt
magasin d'objets( L'entrepôt d'objets) constitue la base de la base de données indexedDB. Il n'y a pas de table de base de données dans indexedDB et l'entrepôt d'objets est équivalent à une table de base de données.
var request = indexedDB.open('dbName', 3); // ... request.onupgradeneeded = function(e){ var db = e.target.result; var store = db.createObjectStore('Users', {keyPath: 'userId', autoIncrement: false}); console.log('创建对象仓库成功'); }
La méthode db.createObjectStore reçoit deux paramètres, le premier est le nom de l'entrepôt d'objets, le deuxième paramètre est un paramètre facultatif et la valeur est un objet js. L'attribut keyPath dans cet objet est la clé primaire, qui équivaut à l'identifiant en tant que clé primaire dans la table de base de données. Si l'attribut autoIncrement est faux, cela signifie que la valeur de la clé primaire n'augmentera pas automatiquement et que la valeur de la clé primaire doit être spécifiée lors de l'ajout de données.
Remarque : dans la base de données, le nom de l'entrepôt d'objets ne peut pas être répété, sinon le navigateur signalera une erreur.
Créer un index
indexedDB Dans la base de données, un index est créé via un attribut de l'objet de données Lors de la récupération dans la base de données, seul l'attribut défini comme index. peut être utilisé.
var request = indexedDB.open('dbName', 4); // ... request.onupgradeneeded = function(e){ var db = e.target.result; var store = db.createObjectStore('newUsers', {keyPath: 'userId', autoIncrement: false}); var idx = store.createIndex('usernameIndex','userName',{unique: false}) console.log('创建索引成功'); }
La méthode store.createIndex reçoit trois paramètres. Le premier est le nom de l'index et le second est l'attribut de l'objet de données. Dans l'exemple ci-dessus, l'attribut userName est utilisé pour créer l'index. . Le troisième paramètre est les paramètres Select, la valeur est un objet js. L'attribut unique de cet objet est vrai, ce qui signifie que les valeurs d'index ne peuvent pas être les mêmes, c'est-à-dire que le nom d'utilisateur des deux données ne peut pas être le même, et s'il est faux, ils peuvent être les mêmes.
Basé sur les transactions
Dans indexedDB, toutes les opérations de données ne peuvent être effectuées qu'au sein des transactions. Après vous être connecté avec succès à la base de données, vous pouvez utiliser la méthode de transaction de l'objet IDBOpenDBRequest pour démarrer une transaction en lecture seule ou une transaction en lecture-écriture.
var request = indexedDB.open('dbName', 5); // ... request.onupgradeneeded = function(e){ var db = e.target.result; var tx = db.transaction('Users','readonly'); tx.oncomplete = function(e){ console.log('事务结束了'); } tx.onabort = function(e){ console.log('事务被中止了'); } }
La méthode db.transaction reçoit deux paramètres. Le premier paramètre peut être une chaîne ou un tableau. Si c'est une chaîne, c'est un nom d'entrepôt d'objets. un tableau composé de noms d'entrepôts d'objets, la transaction peut opérer sur n'importe quel entrepôt d'objets dans les paramètres. Le deuxième paramètre est Mode de transaction Lorsque la lecture seule est transmise, seules les opérations de lecture peuvent être effectuées sur l'entrepôt d'objets et les opérations d'écriture ne peuvent pas être effectuées. Readwrite peut être transmis pour les opérations de lecture et d'écriture.
Données d'opération
add() : Ajouter des données. Reçoit un paramètre, qui est l'objet qui doit être enregistré dans l'entrepôt d'objets.
put() : Ajouter ou modifier des données. Reçoit un paramètre, qui est l'objet qui doit être enregistré dans l'entrepôt d'objets.
get() : Obtenez des données. Reçoit un paramètre, qui est la valeur de clé primaire des données à obtenir.
delete() : 删除数据。接收一个参数,为需要获取数据的主键值。
var request = indexedDB.open('dbName', 5); // ... request.onsuccess = function(e){ var db = e.target.result; var tx = db.transaction('Users','readwrite'); var store = tx.objectStore('Users'); var value = { 'userId': 1, 'userName': 'linxin', 'age': 24 } var req1 = store.put(value); // 保存数据 var req2 = store.get(1); // 获取索引userId为1的数据 req2.onsuccess = function(){ console.log(this.result.userName); // linxin } var req3 = store.delete(1); // 删除索引为1的数据 req3.onsuccess = function(){ console.log('删除数据成功'); // 删除数据成功 } }
add 和 put 的作用类似,区别在于 put 保存数据时,如果该数据的主键在数据库中已经有相同主键的时候,则会修改数据库中对应主键的对象,而使用 add 保存数据,如果该主键已经存在,则保存失败。
上面我们知道使用 get() 方法可以获取数据,但是需要制定主键值。如果我们想要获取一个区间的数据,可以使用游标。游标通过对象仓库的 openCursor 方法创建并打开。
openCursor 方法接收两个参数,第一个是 IDBKeyRange 对象,该对象创建方法主要有以下几种:
// boundRange 表示主键值从1到10(包含1和10)的集合。 // 如果第三个参数为true,则表示不包含最小键值1,如果第四参数为true,则表示不包含最大键值10,默认都为false var boundRange = IDBKeyRange.bound(1, 10, false, false); // onlyRange 表示由一个主键值的集合。only() 参数则为主键值,整数类型。 var onlyRange = IDBKeyRange.only(1); // lowerRaneg 表示大于等于1的主键值的集合。 // 第二个参数可选,为true则表示不包含最小主键1,false则包含,默认为false var lowerRange = IDBKeyRange.lowerBound(1, false); // upperRange 表示小于等于10的主键值的集合。 // 第二个参数可选,为true则表示不包含最大主键10,false则包含,默认为false var upperRange = IDBKeyRange.upperBound(10, false);
openCursor 方法的第二个参数表示游标的读取方向,主要有以下几种:
next : 游标中的数据按主键值升序排列,主键值相等的数据都被读取
nextunique : 游标中的数据按主键值升序排列,主键值相等只读取第一条数据
prev : 游标中的数据按主键值降序排列,主键值相等的数据都被读取
prevunique : 游标中的数据按主键值降序排列,主键值相等只读取第一条数据
var request = indexedDB.open('dbName', 6); // ... request.onsuccess = function(e){ var db = e.target.result; var tx = db.transaction('Users','readwrite'); var store = tx.objectStore('Users'); var range = IDBKeyRange.bound(1,10); var req = store.openCursor(range, 'next'); req.onsuccess = function(){ var cursor = this.result; if(cursor){ console.log(cursor.value.userName); cursor.continue(); }else{ console.log('检索结束'); } } }
当存在符合检索条件的数据时,可以通过 update 方法更新该数据:
cursor.updata({ userId : cursor.key, userName : 'Hello', age : 18 });
可以通过 delete 方法删除该数据:
cursor.delete();
可以通过 continue 方法继续读取下一条数据,否则读到第一条数据之后不再继续读取:
cursor.continue();
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le langage Go est un langage de programmation efficace, concis et facile à apprendre. Il est privilégié par les développeurs en raison de ses avantages en programmation simultanée et en programmation réseau. Dans le développement réel, les opérations de base de données font partie intégrante. Cet article explique comment utiliser le langage Go pour implémenter les opérations d'ajout, de suppression, de modification et de requête de base de données. Dans le langage Go, nous utilisons généralement des bibliothèques tierces pour faire fonctionner les bases de données, telles que les packages SQL couramment utilisés, gorm, etc. Ici, nous prenons le package SQL comme exemple pour présenter comment implémenter les opérations d'ajout, de suppression, de modification et de requête de la base de données. Supposons que nous utilisons une base de données MySQL.

Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données et fournit les types de mappage suivants : join-subclass : crée une table séparée pour la sous-classe, incluant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent réunit toutes les colonnes de la sous-classe.

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

HTML ne peut pas lire directement la base de données, mais cela peut être réalisé via JavaScript et AJAX. Les étapes comprennent l'établissement d'une connexion à la base de données, l'envoi d'une requête, le traitement de la réponse et la mise à jour de la page. Cet article fournit un exemple pratique d'utilisation de JavaScript, AJAX et PHP pour lire les données d'une base de données MySQL, montrant comment afficher dynamiquement les résultats d'une requête dans une page HTML. Cet exemple utilise XMLHttpRequest pour établir une connexion à la base de données, envoyer une requête et traiter la réponse, remplissant ainsi les données dans les éléments de la page et réalisant la fonction de lecture HTML de la base de données.

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

PHP est un langage de programmation back-end largement utilisé dans le développement de sites Web. Il possède de puissantes fonctions d'exploitation de bases de données et est souvent utilisé pour interagir avec des bases de données telles que MySQL. Cependant, en raison de la complexité du codage des caractères chinois, des problèmes surviennent souvent lorsqu'il s'agit de caractères chinois tronqués dans la base de données. Cet article présentera les compétences et les pratiques de PHP dans la gestion des caractères chinois tronqués dans les bases de données, y compris les causes courantes des caractères tronqués, les solutions et des exemples de code spécifiques. Les raisons courantes pour lesquelles les caractères sont tronqués sont des paramètres de jeu de caractères incorrects dans la base de données : le jeu de caractères correct doit être sélectionné lors de la création de la base de données, comme utf8 ou u.

Grâce au package base de données/sql de la bibliothèque standard Go, vous pouvez vous connecter à des bases de données distantes telles que MySQL, PostgreSQL ou SQLite : créez une chaîne de connexion contenant les informations de connexion à la base de données. Utilisez la fonction sql.Open() pour ouvrir une connexion à la base de données. Effectuez des opérations de base de données telles que des requêtes SQL et des opérations d'insertion. Utilisez defer pour fermer la connexion à la base de données afin de libérer des ressources.
